package Ġcom . wine adv oc ate . network Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . wine adv oc ate . br ad ix app . Build Config Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ 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 Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* Ġ ĠCreated Ġby ĠChristian Ġon ĠTh ursday ĠMar , Ġ 2 0 1 9 Ċ Ġ*/ Ċ Ċ object ĠService Generator Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġapi HttpClient : ĠOk HttpClient . Builder ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġapi Ret rofit : ĠRet rofit ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġnew Ġimplementation ĊĠĠĠ Ġprivate Ġval Ġgson Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠ Ġ. set Len ient () ĊĠĠĠĠĠĠĠ Ġ. serialize Null s () ĊĠĠĠĠĠĠĠ Ġ. disable Html Esc aping () ĊĠĠĠĠĠĠĠ Ġ. enable Complex Map Key Serialization () ĊĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠ Ġprivate Ġval Ġapi Builder Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. baseUrl ( Build Config . AUTH _ BASE _ URL ) ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĊĊĠĠĠ Ġfun Ġ< S > Ġcreate API Service ( service Class : ĠClass < S >): ĠS Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġinterceptor Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġinterceptor . level Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĊĠĠĠĠĠĠĠ Ġ// ĠHttp Logging Interceptor . Logger Ġ{ Ġmessage Ġ-> ĠLog . d (" Ok Http ", Ġmessage ) Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġhere ĠI Ġchecked Ġif ĠOk http client Ġis Ġnull , Ġcreate Ġnew . Ġotherwise , Ġuse Ġexisting . ĊĠĠĠĠĠĠĠ Ġif Ġ( api HttpClient Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi HttpClient Ġ= ĠOk HttpClient . Builder (). add Interceptor ( interceptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġapi HttpClient !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 6 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 6 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 6 0 , ĠTimeUnit . SECONDS ) ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġhere ĠI Ġchecked Ġif Ġretrofit Ġis Ġnull , Ġcreate Ġnew . Ġotherwise , Ġuse Ġexisting . ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= Ġapi HttpClient !!. build () ĊĠĠĠĠĠĠĠ Ġif Ġ( api Ret rofit Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Ret rofit Ġ= Ġapi Builder . client ( client ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġapi Ret rofit !!. create ( service Class ) ĊĠĠĠ Ġ} Ċ } Ċ