package Ġcom . mal li ina . bo attr acker . backend Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . mal li ina . bo attr acker .* Ċ import Ġcom . squareup . mos hi . Json Adapter Ċ import Ġcom . squareup . mos hi . M oshi Ċ Ċ class ĠBo at Client ( val Ġhttp : ĠHttpClient ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbuild ( ctx : ĠContext , Ġtoken : ĠId Token ): ĠBo at Client Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp Ġ= ĠHttpClient . getInstance ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp . token Ġ= Ġtoken ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBo at Client ( http ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbasic ( ctx : ĠContext ): ĠBo at Client Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp Ġ= ĠHttpClient . getInstance ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBo at Client ( http ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm oshi : ĠM oshi Ġ= ĠJson . mos hi ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠAdapter s Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser : ĠJson Adapter < User Response > Ġ= Ġm oshi . adapter ( User Response :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġconf : ĠJson Adapter < Client Conf > Ġ= Ġm oshi . adapter ( Client Conf :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġtrack : ĠJson Adapter < Track Response > Ġ= Ġm oshi . adapter ( Track Response :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġtracks : ĠJson Adapter < Tracks Response > Ġ= Ġm oshi . adapter ( Tracks Response :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġstats : ĠJson Adapter < Stats Response > Ġ= Ġm oshi . adapter ( Stats Response :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġerrors : ĠJson Adapter < Errors > Ġ= Ġm oshi . adapter ( Errors :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġcoords : ĠJson Adapter < Coords Message > Ġ= Ġm oshi . adapter ( Coords Message :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġv esse ls : ĠJson Adapter < V essel Message > Ġ= Ġm oshi . adapter ( V essel Message :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġevent : ĠJson Adapter < Event Name > Ġ= Ġm oshi . adapter ( Event Name :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġlanguage : ĠJson Adapter < Change Language > Ġ= Ġm oshi . adapter ( Change Language :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠJson Adapter < Change Title > Ġ= Ġm oshi . adapter ( Change Title :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠJson Adapter < Simple Message > Ġ= Ġm oshi . adapter ( Simple Message :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġme (): ĠBo at User Ġ= Ġget ("/ users / me ", ĠAdapter s . user ). user ĊĊĠĠĠ Ġsuspend Ġfun Ġchange Language ( to : ĠLanguage ): ĠSimple Message Ġ= ĊĠĠĠĠĠĠĠ Ġput ("/ users / me ", ĠChange Language ( to . code ), ĠAdapter s . language , ĠAdapter s . message ) ĊĊĠĠĠ Ġsuspend Ġfun Ġchange Title ( to : ĠTrack Title , Ġof : ĠTrack Name ): ĠTrack Ref Ġ= ĊĠĠĠĠĠĠĠ Ġput ("/ tracks /$ of ", ĠChange Title ( to ), ĠAdapter s . title , ĠAdapter s . track ). track ĊĊĠĠĠ Ġsuspend Ġfun Ġconf (): ĠClient Conf Ġ= Ġget ("/ conf ", ĠAdapter s . conf ) ĊĊĠĠĠ Ġsuspend Ġfun Ġtracks (): ĠList < Track Ref > Ġ= Ġget ("/ tracks ", ĠAdapter s . tracks ). tracks ĊĊĠĠĠ Ġsuspend Ġfun Ġstats (): ĠStats Response Ġ= Ġget ("/ stats ", ĠAdapter s . stats ) ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġ< T , ĠU > Ġput ( ĊĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠ Ġpayload : ĠT , ĊĠĠĠĠĠĠĠ Ġwrite : ĠJson Adapter < T >, ĊĠĠĠĠĠĠĠ Ġread : ĠJson Adapter < U > ĊĠĠĠ Ġ): ĠU Ġ= ĊĠĠĠĠĠĠĠ Ġhttp . put ( Env . baseUrl . append ( path ), Ġpayload , Ġwrite , Ġread ) ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġ< T > Ġget ( path : ĠString , Ġadapter : ĠJson Adapter < T >): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġhttp . get Json ( Env . baseUrl . append ( path ), Ġadapter ) Ċ } Ċ