package Ġre pol izer . adapter . network . ret rofit Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġre pol izer . Re pol izer Ċ import Ġre pol izer . adapter . factory . Adapter Factory Ċ import Ġre pol izer . adapter . network . ret rofit . api . Default Network Controller Ċ import Ġre pol izer . adapter . network . ret rofit . api . Network Controller Ċ import Ġre pol izer . adapter . network . ret rofit . api . NetworkInterface Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . scal ars . Scalars Converter Factory Ċ import Ġjava . lang . reflect . Type Ċ Ċ class ĠRet rofit Network Adapter Factory Ċ @ Jvm Over loads Ġconstructor ( baseUrl : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgson : ĠGson Ġ= ĠGson (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient : ĠOk HttpClient ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Controller Class : ĠClass < out ĠNetwork Controller > Ġ= ĠDefault Network Controller :: class . java ) Ġ: ĠAdapter Factory < Ret rofit Network Adapter > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġnetwork Controller : ĠNetwork Controller ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġretrofit Builder Ġ= ĠRet rofit . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbaseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Converter Factory ( Scalars Converter Factory . create ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient ?. let Ġ{ Ġclient ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnetwork Interface Ġ= Ġretrofit Builder . build (). create ( NetworkInterface :: class . java ) ĊĠĠĠĠĠĠĠ Ġnetwork Controller Ġ= Ġnetwork Interface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġnetwork Controller Class . get Constructor ( NetworkInterface :: class . java , ĠGson :: class . java ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . newInstance ( network Interface , Ġgson ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" Network Controller Ġis Ġnull . ĠUsage Ġof Ġreflection Ġto Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" create Ġan Ġinstance Ġof Ġyour ĠNetwork Controller Ġ($ network Controller Class . class ) Ġhas Ġfailed .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ( type : ĠType , Ġrepository Class : ĠClass <* >, Ġre pol izer : ĠRe pol izer ): ĠRet rofit Network Adapter ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit Network Adapter ( network Controller ) ĊĠĠĠ Ġ} Ċ }