2019-12-25 16:20:32 -05:00
const request = require ( 'request' )
const XOR = require ( '../../classes/XOR.js' ) ;
const xor = new XOR ( ) ;
module . exports = async ( app , req , res , api ) => {
2019-12-29 18:59:29 -05:00
if ( req . body . count ) return app . run . countMessages ( app , req , res )
2019-12-25 16:20:32 -05:00
if ( ! req . body . accountID ) return res . status ( 400 ) . send ( "No account ID provided!" )
if ( ! req . body . password ) return res . status ( 400 ) . send ( "No password provided!" )
2020-11-01 15:29:32 -05:00
let params = req . gdParams ( {
2019-12-25 16:20:32 -05:00
accountID : req . body . accountID ,
gjp : xor . encrypt ( req . body . password , 37526 ) ,
page : req . body . page || 0 ,
2019-12-29 18:59:29 -05:00
getSent : req . query . sent ? 1 : 0
2020-09-29 21:42:18 -04:00
} )
2019-12-25 16:20:32 -05:00
2020-11-01 15:29:32 -05:00
request . post ( app . endpoint + 'getGJMessages20.php' , params , async function ( err , resp , body ) {
2019-12-25 16:20:32 -05:00
2021-01-11 16:00:21 -05:00
if ( err || body == '-1' || body == '-2' || ! body ) return res . status ( 400 ) . send ( ` Error fetching messages! Messages get blocked a lot so try again later, or make sure your username and password are entered correctly. Last worked: ${ app . timeSince ( ) } ago. ` )
else app . trackSuccess ( )
2019-12-25 16:20:32 -05:00
let messages = body . split ( "|" ) . map ( msg => app . parseResponse ( msg ) )
let messageArray = [ ]
messages . forEach ( x => {
let msg = { }
msg . id = x [ 1 ] ;
2019-12-29 18:59:29 -05:00
msg . playerID = x [ 3 ]
msg . accountID = x [ 2 ]
2019-12-25 16:20:32 -05:00
msg . author = x [ 6 ]
2019-12-31 18:51:08 -05:00
msg . subject = Buffer . from ( x [ 4 ] , "base64" ) . toString ( ) . replace ( /^Re: ☆/ , "Re: " )
2019-12-25 16:20:32 -05:00
msg . date = x [ 7 ] + app . config . timestampSuffix
msg . unread = x [ 8 ] != "1"
2019-12-31 18:51:08 -05:00
if ( msg . subject . endsWith ( "☆" ) || msg . subject . startsWith ( "☆" ) ) {
if ( msg . subject . endsWith ( "☆" ) ) msg . subject = msg . subject . slice ( 0 , - 1 )
else msg . subject = msg . subject . slice ( 1 )
2019-12-29 18:59:29 -05:00
msg . browserColor = true
}
2019-12-25 16:20:32 -05:00
messageArray . push ( msg )
} )
return res . status ( 200 ) . send ( messageArray )
} )
}