11package pro .gravit .launchermodules .myhttp ;
22
33import java .io .IOException ;
4- import java .lang .reflect .Type ;
54import java .net .URLEncoder ;
65import java .nio .charset .StandardCharsets ;
76import java .util .Collections ;
87import java .util .List ;
98import java .util .Map ;
109import java .util .UUID ;
11- import java .util .stream .Collectors ;
1210
1311import com .google .gson .reflect .TypeToken ;
14- import com .sun .source .tree .BreakTree ;
1512import org .apache .logging .log4j .LogManager ;
1613import org .apache .logging .log4j .Logger ;
1714
1815import pro .gravit .launcher .ClientPermissions ;
1916import pro .gravit .launcher .events .request .GetAvailabilityAuthRequestEvent ;
20- import pro .gravit .launcher .profiles .ClientProfile ;
2117import pro .gravit .launcher .profiles .Texture ;
2218import pro .gravit .launcher .request .auth .AuthRequest ;
2319import pro .gravit .launcher .request .auth .details .AuthPasswordDetails ;
3430import pro .gravit .launchserver .auth .core .UserSession ;
3531import pro .gravit .launchserver .auth .core .interfaces .UserHardware ;
3632import pro .gravit .launchserver .auth .core .interfaces .provider .AuthSupportHardware ;
37- import pro .gravit .launchserver .auth .core .interfaces .user . UserSupportHardware ;
33+ import pro .gravit .launchserver .auth .core .interfaces .session . UserSessionSupportHardware ;
3834import pro .gravit .launchserver .auth .core .interfaces .user .UserSupportTextures ;
3935import pro .gravit .launchserver .auth .texture .JsonTextureProvider ;
4036import pro .gravit .launchserver .helper .HttpHelper ;
@@ -237,14 +233,19 @@ public MyHttpUserHardware getHardwareInfoByPublicKey(byte[] publicKey) {
237233 logger .error ("getHardwareInfoByPublicKey" , e );
238234 }
239235
240- if (response != null && response .isSuccessful () ) {
236+ if (response != null && response .statusCode () == 200 ) {
241237 MyHttpUserHardware userHardware = response .result ();
242238 logger .debug ("Successfully got UserHardware {} by publicKey" , userHardware .id );
243239 return userHardware ;
244240 }
245241
242+ // HTTP 204 meaning NO CONTENT, that usually means no data found, but request processed successfully
243+ if (response != null && response .statusCode () == 204 ) {
244+ logger .debug ("UserHardware not found by publicKey" );
245+ return null ;
246+ }
247+
246248 logger .debug ("Something went wrong while getting UserHardware by publicKey" );
247- // possible case, will be processed outside...
248249 return null ;
249250 }
250251
@@ -257,14 +258,19 @@ public MyHttpUserHardware getHardwareInfoByData(HardwareReportRequest.HardwareIn
257258 logger .error ("getHardwareInfoByData" , e );
258259 }
259260
260- if (response != null && response .isSuccessful () ) {
261+ if (response != null && response .statusCode () == 200 ) {
261262 MyHttpUserHardware userHardware = response .result ();
262263 logger .debug ("Successfully got UserHardware {} by info" , userHardware .id );
263264 return userHardware ;
264265 }
265266
267+ // HTTP 204 meaning NO CONTENT, that usually means no data found, but request processed successfully
268+ if (response != null && response .statusCode () == 204 ) {
269+ logger .debug ("UserHardware not found by publicKey" );
270+ return null ;
271+ }
272+
266273 logger .debug ("Something went wrong while getting UserHardware by info" );
267- // possible case, will be processed outside...
268274 return null ;
269275 }
270276
@@ -277,14 +283,19 @@ public MyHttpUserHardware getHardwareInfoById(String id) {
277283 logger .error ("getHardwareInfoById" , e );
278284 }
279285
280- if (response != null && response .isSuccessful () ) {
286+ if (response != null && response .statusCode () == 200 ) {
281287 MyHttpUserHardware userHardware = response .result ();
282288 logger .debug ("Successfully got UserHardware by id {}" , id );
283289 return userHardware ;
284290 }
285291
292+ // HTTP 204 meaning NO CONTENT, that usually means no data found, but request processed successfully
293+ if (response != null && response .statusCode () == 204 ) {
294+ logger .debug ("UserHardware not found by publicKey" );
295+ return null ;
296+ }
297+
286298 logger .debug ("Something went wrong while getting UserHardware by id {}" , id );
287- // possible case, will be processed outside...
288299 return null ;
289300 }
290301
@@ -299,7 +310,7 @@ public MyHttpUserHardware createHardwareInfo(HardwareReportRequest.HardwareInfo
299310
300311 if (response != null && response .isSuccessful ()) {
301312 MyHttpUserHardware userHardware = response .result ();
302- logger .debug ("Successfully created UserHardware, id {}" , userHardware . getId () );
313+ logger .debug ("Successfully created UserHardware" );
303314 return userHardware ;
304315 }
305316
@@ -313,24 +324,24 @@ public MyHttpUserHardware createHardwareInfo(HardwareReportRequest.HardwareInfo
313324 public void connectUserAndHardware (UserSession userSession , UserHardware hardware ) {
314325 HttpHelper .HttpOptional <MyHttpSimpleResponse , HttpRequester .SimpleError > response = null ;
315326 try {
316- response = requester .send (requester .post (connectUserAndHardwareUrl , new UserHardwareRequest (hardware , userSession ), bearerToken ), MyHttpSimpleResponse .class );
327+ response = requester .send (requester .post (connectUserAndHardwareUrl , new UserHardwareRequest (( MyHttpUserHardware ) hardware , ( MyHttpUserSession ) userSession ), bearerToken ), MyHttpSimpleResponse .class );
317328 } catch (Throwable e ) {
318329 logger .error ("connectUserAndHardware" , e );
319330 }
320331
321332 if (response != null && response .isSuccessful ()) {
322- logger .debug ("Successfully connected user {} to hardware {} " , userSession .getUser ().getUUID (), hardware . getId ());
333+ logger .debug ("Successfully connected user {} to hardware" , userSession .getUser ().getUUID ());
323334 return ;
324335 }
325336
326- logger .debug ("Something went wrong while connecting user {} to hardware {} " , userSession .getUser ().getUUID (), hardware . getId ());
337+ logger .debug ("Something went wrong while connecting user {} to hardware" , userSession .getUser ().getUUID ());
327338 }
328339
329340 @ Override
330341 public void addPublicKeyToHardwareInfo (UserHardware hardware , byte [] publicKey ) {
331342 HttpHelper .HttpOptional <MyHttpSimpleResponse , HttpRequester .SimpleError > response = null ;
332343 try {
333- response = requester .send (requester .post (addPublicKeyToHardwareInfoUrl , new UserHardwareRequest (hardware , publicKey ), bearerToken ), MyHttpSimpleResponse .class );
344+ response = requester .send (requester .post (addPublicKeyToHardwareInfoUrl , new UserHardwareRequest (( MyHttpUserHardware ) hardware , publicKey ), bearerToken ), MyHttpSimpleResponse .class );
334345 } catch (Throwable e ) {
335346 logger .error ("addPublicKeyToHardwareInfo" , e );
336347 }
@@ -347,7 +358,7 @@ public void addPublicKeyToHardwareInfo(UserHardware hardware, byte[] publicKey)
347358 public Iterable <User > getUsersByHardwareInfo (UserHardware hardware ) {
348359 HttpHelper .HttpOptional <List <MyHttpUser >, HttpRequester .SimpleError > response = null ;
349360 try {
350- response = requester .send (requester .post (getUsersByHardwareInfoUrl , new UserHardwareRequest (hardware ), bearerToken ), (new TypeToken <List <MyHttpUser >>(){}).getType ());
361+ response = requester .send (requester .post (getUsersByHardwareInfoUrl , new UserHardwareRequest (( MyHttpUserHardware ) hardware ), bearerToken ), (new TypeToken <List <MyHttpUser >>(){}).getType ());
351362 } catch (Throwable e ) {
352363 logger .error ("getUsersByHardwareInfo" , e );
353364 }
@@ -369,7 +380,7 @@ public Iterable<User> getUsersByHardwareInfo(UserHardware hardware) {
369380 public void banHardware (UserHardware hardware ) {
370381 HttpHelper .HttpOptional <MyHttpSimpleResponse , HttpRequester .SimpleError > response = null ;
371382 try {
372- response = requester .send (requester .post (banHardwareUrl , new UserHardwareRequest (hardware ), bearerToken ), MyHttpSimpleResponse .class );
383+ response = requester .send (requester .post (banHardwareUrl , new UserHardwareRequest (( MyHttpUserHardware ) hardware ), bearerToken ), MyHttpSimpleResponse .class );
373384 } catch (Throwable e ) {
374385 logger .error ("banHardware" , e );
375386 }
@@ -386,7 +397,7 @@ public void banHardware(UserHardware hardware) {
386397 public void unbanHardware (UserHardware hardware ) {
387398 HttpHelper .HttpOptional <MyHttpSimpleResponse , HttpRequester .SimpleError > response = null ;
388399 try {
389- response = requester .send (requester .post (unbanHardwareUrl , new UserHardwareRequest (hardware ), bearerToken ), MyHttpSimpleResponse .class );
400+ response = requester .send (requester .post (unbanHardwareUrl , new UserHardwareRequest (( MyHttpUserHardware ) hardware ), bearerToken ), MyHttpSimpleResponse .class );
390401 } catch (Throwable e ) {
391402 logger .error ("unbanHardware" , e );
392403 }
@@ -427,23 +438,23 @@ public record HardwareInfoRequest(HardwareReportRequest.HardwareInfo info, byte[
427438 }
428439 }
429440
430- public record UserHardwareRequest (UserHardware hardware , UserSession userSession , byte [] publicKey ) {
431- UserHardwareRequest (UserHardware hardware ) {
441+ public record UserHardwareRequest (MyHttpUserHardware hardware , MyHttpUserSession userSession , byte [] publicKey ) {
442+ UserHardwareRequest (MyHttpUserHardware hardware ) {
432443 this (hardware , null , null );
433444 }
434445
435- UserHardwareRequest (UserHardware hardware , byte [] publicKey ) {
446+ UserHardwareRequest (MyHttpUserHardware hardware , byte [] publicKey ) {
436447 this (hardware , null , publicKey );
437448 }
438449
439- UserHardwareRequest (UserHardware hardware , UserSession userSession ) {
450+ UserHardwareRequest (MyHttpUserHardware hardware , MyHttpUserSession userSession ) {
440451 this (hardware , userSession , null );
441452 }
442453 }
443454
444455
445456
446- public record MyHttpUserSession (String id , String accessToken , String refreshToken , int expire , MyHttpUser user ) implements UserSession {
457+ public record MyHttpUserSession (String id , String accessToken , String refreshToken , int expire , MyHttpUser user , String hardwareId , UserHardware userHardware ) implements UserSession , UserSessionSupportHardware {
447458
448459 @ Override
449460 public String getID () {
@@ -468,9 +479,19 @@ public long getExpireIn() {
468479 public AuthManager .AuthReport toAuthReport () {
469480 return new AuthManager .AuthReport (accessToken , accessToken , refreshToken , expire *1000L /* seconds to milliseconds */ , this );
470481 }
482+
483+ @ Override
484+ public String getHardwareId () {
485+ return hardwareId ;
486+ }
487+
488+ @ Override
489+ public UserHardware getHardware () {
490+ return userHardware ;
491+ }
471492 }
472493
473- public record MyHttpUser (String username , UUID uuid , List <String > permissions , List <String > roles , Map <String , JsonTextureProvider .JsonTexture > assets , boolean banned , UserHardware userHardware ) implements User , UserSupportHardware , UserSupportTextures {
494+ public record MyHttpUser (String username , UUID uuid , List <String > permissions , List <String > roles , Map <String , JsonTextureProvider .JsonTexture > assets , boolean banned , UserHardware userHardware ) implements User , UserSupportTextures {
474495
475496 @ Override
476497 public String getUsername () {
@@ -514,11 +535,6 @@ public Texture getCloakTexture() {
514535 public Map <String , Texture > getUserAssets () {
515536 return JsonTextureProvider .JsonTexture .convertMap (assets );
516537 }
517-
518- @ Override
519- public UserHardware getHardware () {
520- return userHardware ;
521- }
522538 }
523539
524540 public record MyHttpUserHardware (HardwareReportRequest .HardwareInfo hardwareInfo , byte [] publicKey , String id , boolean banned ) implements UserHardware {
0 commit comments