package Ġcom . the j uki . example . api Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit . URL Util Ċ import Ġcom . the j uki . example . Preference Constants Ċ import Ġcom . the j uki . example . extension . Preference Helper Ċ import Ġcom . the j uki . example . json .* Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ /** Ċ Ġ* ĠAPI ĠClient Ċ Ġ* Ċ Ġ* ĠHandles Ġthe ĠAPI Ġcalls Ġusing ĠRet rofit . Ċ Ġ* Ċ Ġ* Ġ@ author Ġ** The J uki ** Ġ([ GitHub ]( https :// github . com / The J uki )) Ċ Ġ* Ġ@ version Ġ 1 . 0 Ċ Ġ*/ Ċ class ĠApi Client Ġprivate Ġconstructor ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġrest Service : ĠRest Service ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġprefs : ĠSharedPreferences ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs Ġ= ĠPreference Helper . secure Prefs ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġserver Url : ĠString ? Ġ= Ġprefs ?. getString ( Preference Constants . server Url , Ġ"") ĊĊĠĠĠĠĠĠĠ Ġreplace Url ( server Url . or Empty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠSingleton Holder < ApiClient , ĠContext >( :: ApiClient ) ĊĊĠĠĠ Ġfun Ġreplace Url ( server Url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( URL Util . is Network Url ( server Url . toLowerCase ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrofit : ĠRet rofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( server Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Service Ġ= Ġretrofit . create ( Rest Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Service Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" ApiClient ", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetToken (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs ?. getString ( Preference Constants . token , Ġ"") Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget UserId (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs ?. getString ( Preference Constants . user Contact Id , Ġ"") Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Username (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs ?. getString ( Preference Constants . username , Ġ"") Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget FullName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs ?. getString ( Preference Constants . fullname , Ġ"") Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCheck Ġif ĠRet rofit Ġcreated Ġthe ĠRest Service ĊĠĠĠ Ġfun Ġis Ready (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . rest Service Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠLogin ĊĠĠĠ Ġfun Ġpost Login ( username : ĠString , Ġpassword : ĠString ): ĠObservable < User Json > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. post Login ( username , Ġpassword ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠRegister Ġdevice ĠID Ġfor Ġnotifications ĊĠĠĠ Ġprivate Ġfun Ġpost Device Registration ( device Token : ĠString ): ĠObservable < Success Status Json > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. post Device Registration ( getToken (), Ġdevice Token , Ġ" Android ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠUpdate Ġdevice ĠID ĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġfun Ġupdate Device Registration ( device Token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Device Registration ( device Token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . status Ġ== Ġ" Success ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" update Device Reg ", Ġ" Device ĠID ĠRegistration Ġsucceeded ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" update Device Reg ", Ġ" Error : ĠDevice ĠID ĠRegistration Ġfailed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" update Device Reg ", Ġerror . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// region ĠContact ĠAPI ĊĊĠĠĠ Ġ// ĠGet Ġcontacts Ġby Ġsearch Ġterm ĊĠĠĠ Ġfun Ġget Contacts ( term : ĠString ): ĠObservable < List < TableCell Json >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. get Contacts ( getToken (), Ġterm ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Contact ( id : ĠString ): ĠObservable < Contact Json > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. get Contact ( getToken (), Ġid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Contact ( json : ĠContact Json ): ĠObservable < Contact Json > Ġ{ ĊĠĠĠĠĠĠĠ Ġjson . modify ing User Ġ= Ġget Username () ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. post Contact ( getToken (), Ġjson ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Auto Complete Contacts ( term : ĠString ): ĠArrayList < Contact Lookup Json > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. get Auto Complete Contacts ( getToken (), Ġterm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. blocking First ( null ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠNote ĠAPI ĊĠĠĠ Ġfun Ġget Notes ( p Id : ĠString , Ġp Type : ĠString , Ġtype : ĠString ): ĠObservable < List < TableCell Json >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. get Notes ( getToken (), Ġp Id , Ġp Type , Ġtype ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Note ( id : ĠString ): ĠObservable < Note Json > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. get Note ( getToken (), Ġid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Note ( json : ĠNote Json ): ĠObservable < Note Json > Ġ{ ĊĠĠĠĠĠĠĠ Ġjson . modify ing User Ġ= Ġget Username () ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. post Note ( getToken (), Ġjson ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠTeam ĠAPI ĊĠĠĠ Ġfun Ġget Teams (): ĠObservable < ArrayList < ListItem Json >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. get Teams ( getToken ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠCount s ĠAPI ĊĠĠĠ Ġfun Ġget Counts (): ĠObservable < Counts Json > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Service !!. get Counts ( getToken ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion Ċ } Ċ