package Ġcom . lx ch . http component _ kotlin Ċ Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġlu ox iao ch eng Ġon Ġ 2 0 1 8 / 3 / 2 8 . Ċ Ġ*/ Ċ class ĠService Factory Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠhttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( Http Logging Interceptor () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setLevel ( if Ġ( Build Config . DEBUG ) ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠHttp Logging Interceptor . Level . NONE )) ĊĠĠĠĠĠĠĠ Ġvar ĠRet rofit Builder Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Build Config . app Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠ Ġvar Ġmaps Ġ= ĠHashMap < String , ĠInt >() ĊĠĠĠĠĠĠĠ Ġvar Ġlist Ġ= Ġmutable ListOf < Any >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Interceptor ( interceptor : ĠInter ceptor ): ĠService Factory Ġ{ ĊĠĠĠĠĠĠĠ ĠhttpClient . add Interceptor ( interceptor ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġcreate Service ( cl z : ĠClass < T >): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġget Ġ= Ġmaps . get ( cl z . toString ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( get Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlist . get ( get ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġretrofit Ġ= ĠRet rofit Builder . client ( httpClient . build ()). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreate Ġ= Ġretrofit . create ( cl z ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaps . put ( cl z . toString (), Ġlist . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( create !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }