1010import com .rtm516 .mcxboxbroadcast .core .models .XboxTokenInfo ;
1111
1212import java .io .File ;
13+ import java .io .FileWriter ;
1314import java .io .IOException ;
1415import java .net .URI ;
1516import java .net .http .HttpClient ;
@@ -30,10 +31,13 @@ public class SessionManager {
3031 private final XboxTokenManager xboxTokenManager ;
3132 private final HttpClient httpClient ;
3233 private final Logger logger ;
34+ private final String cache ;
3335
3436 private RtaWebsocketClient rtaWebsocket ;
3537 private ExpandedSessionInfo sessionInfo ;
3638
39+ private String lastSessionResponse ;
40+
3741 /**
3842 * Create an instance of SessionManager using default values
3943 */
@@ -63,6 +67,7 @@ public SessionManager(String cache, Logger logger) {
6367 .build ();
6468
6569 this .logger = logger ;
70+ this .cache = cache ;
6671
6772 this .liveTokenManager = new LiveTokenManager (cache , httpClient , logger );
6873 this .xboxTokenManager = new XboxTokenManager (cache , httpClient , logger );
@@ -239,8 +244,10 @@ private void updateSession() throws SessionUpdateException {
239244 throw new SessionUpdateException (e .getMessage ());
240245 }
241246
247+ lastSessionResponse = createSessionResponse .body ();
248+
242249 if (createSessionResponse .statusCode () != 200 && createSessionResponse .statusCode () != 201 ) {
243- logger .debug ("Got session response: " + createSessionResponse . body () );
250+ logger .debug ("Got session response: " + lastSessionResponse );
244251 throw new SessionUpdateException ("Unable to update session information, got status " + createSessionResponse .statusCode () + " trying to update" );
245252 }
246253 }
@@ -424,4 +431,35 @@ public void stopSession() {
424431 rtaWebsocket .close ();
425432 this .sessionInfo .setSessionId (null );
426433 }
434+
435+ public void dumpSession () {
436+ logger .info ("Dumping current and last session responses" );
437+ try {
438+ FileWriter file = new FileWriter (this .cache + "/lastSessionResponse.json" );
439+ file .write (lastSessionResponse );
440+ file .close ();
441+ } catch (IOException e ) {
442+ logger .error ("Error dumping last session: " + e .getMessage ());
443+ }
444+
445+ HttpRequest createSessionRequest = HttpRequest .newBuilder ()
446+ .uri (URI .create (Constants .CREATE_SESSION + this .sessionInfo .getSessionId ()))
447+ .header ("Content-Type" , "application/json" )
448+ .header ("Authorization" , getTokenHeader ())
449+ .header ("x-xbl-contract-version" , "107" )
450+ .GET ()
451+ .build ();
452+
453+ try {
454+ HttpResponse <String > createSessionResponse = httpClient .send (createSessionRequest , HttpResponse .BodyHandlers .ofString ());
455+
456+ FileWriter file = new FileWriter (this .cache + "/currentSessionResponse.json" );
457+ file .write (createSessionResponse .body ());
458+ file .close ();
459+ } catch (IOException | InterruptedException e ) {
460+ logger .error ("Error dumping current session: " + e .getMessage ());
461+ }
462+
463+ logger .info ("Dumped session responses to 'lastSessionResponse.json' and 'currentSessionResponse.json'" );
464+ }
427465}
0 commit comments