package Ġcom . kotlin mv vm structure . net čĊč Ċ import Ġcom . kotlin mv vm structure . Build Config č Ċ import Ġcom . kotlin mv vm structure . module . engine ers List . response . Engine ers ListResponse č Ċ import Ġcom . google . gson . Gson Builder č Ċ import Ġokhttp 3 . Ok HttpClient č Ċ import Ġokhttp 3 . logging . Http Logging Interceptor č Ċ import Ġretrofit 2 . Call č Ċ import Ġretrofit 2 . Ret rofit č Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory č Ċ import Ġretrofit 2 . http . GET čĊč Ċ object ĠApi Ġ{ čĊčĊĠĠĠ Ġprivate Ġvar Ġretrofit : ĠRet rofit ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġapi : ĠApi Interface ? Ġ= Ġnull čĊčĊĠĠĠ Ġfun Ġget Api (): ĠApi Interface ? Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Len ient () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( api Ġ== Ġnull ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit Ġ= Ġretrofit 2 . Ret rofit . Builder () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Build Config . BASE _ URL ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( m Client ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Ġ= Ġretrofit !!. create ( Api Interface :: class . java ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġapi čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġm Client (): ĠOk HttpClient Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġinterceptor Ġ= ĠHttp Logging Interceptor () čĊĠĠĠĠĠĠĠ Ġinterceptor . level Ġ= ĠHttp Logging Interceptor . Level . BODY čĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor Ġ{ Ġchain Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġchain . request () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġchain . proceed ( request ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* if Ġ( response . code () Ġin Ġ 4 0 1 .. 4 0 3 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" LOG OUT ĠINTER CEP TER : Ġ", Ġ" force Ġlogout ") čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Response Ġ= ĠGson (). fromJson ( response . body () !!. string (), ĠBase Response :: class . java ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Class . active Activity !!. run On Ui Thread Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( Application Class . active Activity !! ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ("") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( base Response . error ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" ok ") Ġ{ Ġ_: ĠDialog Interface , Ġi : ĠInt Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Application Class . active Activity !!. finish Affinity () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPref Manager . instance . token Ġ= Ġ"" čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Class . active Activity !!. startActivity ( Application Class . active Activity !!. landing Page Intent () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( response . code ()== 4 0 9 ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Updater . instance . open () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( interceptor ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* . add Network Interceptor Ġ{ Ġchain Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġrequest : ĠRequest čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Builder Ġ= Ġchain . request (). newBuilder () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" X - Authorization ", ĠPref Manager . instance . token ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest Builder . build () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ add Network Interceptor Ġchain . proceed ( request ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġinterface ĠApi Interface Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ@ GET (" db ") čĊĠĠĠĠĠĠĠ Ġfun Ġget Engine ers (): ĠCall < Engine ers ListResponse > čĊĠĠĠ Ġ} č Ċ }