package Ġonline . p izz ac rust . kotlin rob lox . std . global Ċ Ċ import Ġonline . p izz ac rust . kotlin rob lox . api . global . Profile Ċ import Ġonline . p izz ac rust . kotlin rob lox . implementation Ċ Ċ private Ġval Ġcached Profiles : ĠMutable List < Profile > Ġ= Ġmutable ListOf () Ċ Ċ fun Ġprofile ( username : ĠString ): ĠProfile ? Ġ{ ĊĠĠĠ Ġfor Ġ( cached Profile Ġin Ġcached Profiles ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cached Profile . username Ġ== Ġusername ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcached Profile ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠStd Profile ( username ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġprofile ( userId : ĠLong ): ĠProfile ? Ġ{ ĊĠĠĠ Ġfor Ġ( cached Profile Ġin Ġcached Profiles ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cached Profile . id Ġ== ĠuserId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcached Profile ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠStd Profile ( userId ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠStd Profile Ġ: ĠProfile Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġinternal Id : ĠLong ĊĠĠĠ Ġprivate Ġval Ġinternal Username : ĠString ĊĊĠĠĠ Ġdata Ġclass ĠUsername To Id Response ( var ĠId : ĠLong ?, Ġvar ĠUsername : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor () Ġ: Ġthis ( null , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġconstructor ( id : ĠLong , Ġusername : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . internal Id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġthis . internal Username Ġ= Ġusername ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated (" Do Ġnot Ġuse Ġthis Ġwithout Ġcatch ing Ġit .") ĊĠĠĠ Ġconstructor ( username : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" http :// api . rob lox . com / users / get - by - username ? username =$ username " ĊĠĠĠĠĠĠĠ Ġval Ġresponse Text Ġ= Ġimplementation . req Manager . get ( url ). response ĊĠĠĠĠĠĠĠ Ġval Ġparsed : ĠUsername To Id Response Ġ= Ġimplementation . json Manager . fromJson ( responseText , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUsername To Id Response ()) Ġas ĠUsername To Id Response ĊĠĠĠĠĠĠĠ Ġthis . internal Id Ġ= Ġparsed . Id Ġ?: Ġthrow ĠRuntimeException (" invalid Ġusername ") ĊĠĠĠĠĠĠĠ Ġthis . internal Username Ġ= Ġusername ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated (" Do Ġnot Ġuse Ġthis Ġwithout Ġcatch ing Ġit .") ĊĠĠĠ Ġconstructor ( id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" http :// api . rob lox . com / users /$ id " ĊĠĠĠĠĠĠĠ Ġval Ġresponse Text Ġ= Ġimplementation . req Manager . get ( url ). response ĊĠĠĠĠĠĠĠ Ġval Ġparsed : ĠUsername To Id Response Ġ= Ġimplementation . json Manager . fromJson ( responseText , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUsername To Id Response ()) Ġas ĠUsername To Id Response ĊĠĠĠĠĠĠĠ Ġthis . internal Username Ġ= Ġparsed . Username Ġ?: Ġthrow ĠRuntimeException (" invalid Ġid ") ĊĠĠĠĠĠĠĠ Ġthis . internal Id Ġ= Ġid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġid : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġinternal Id ĊĠĠĠ Ġoverride Ġval Ġusername : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġinternal Username Ċ }