package Ġcom . max pay . sdk . payment . data module . api čĊč Ċ import Ġandroid . content . res . Resources č Ċ import Ġcom . google . gson . Gson Builder č Ċ import Ġcom . max pay . sdk . payment . R č Ċ import Ġcom . max pay . sdk . payment . model . Pay Gateway Info č Ċ import Ġokhttp 3 . Ok HttpClient č Ċ 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 čĊč Ċ internal Ġclass ĠApi ( private Ġval Ġresources : ĠResources ) Ġ{ čĊčĊĠĠĠ Ġprivate Ġvar Ġretrofit Client : ĠRet rofit ? Ġ= Ġnull čĊčĊĠĠĠ Ġprivate Ġvar Ġconfig : ĠPay Gateway Info Ġ= ĠPay Gateway Info . PRO DU CTION čĊčĊĠĠĠ Ġfun Ġ< T > Ġcreate Api ( class To Create : ĠClass < T >, Ġgateway Info : ĠPay Gateway Info ?): ĠT Ġ= čĊĠĠĠĠĠĠĠ Ġget Ret rofit ( gateway Info Ġ?: ĠPay Gateway Info . PRO DU CTION ). create ( class To Create ) čĊčĊčĊĠĠĠ Ġprivate Ġfun Ġget Ret rofit ( gateway Info : ĠPay Gateway Info ): ĠRet rofit Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġcurrent Client Ġ= Ġretrofit Client čĊĠĠĠĠĠĠĠ Ġval Ġcurrent Config Ġ= Ġconfig čĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( current Client Ġ== Ġnull Ġ|| Ġcurrent Config Ġ!= Ġgateway Info ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġok HttpClient Ġ= ĠOk HttpClient . Builder () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 6 0 , ĠTimeUnit . SECONDS ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 6 0 , ĠTimeUnit . SECONDS ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 6 0 , ĠTimeUnit . SECONDS ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient . dispatcher (). max Requests Per Host Ġ= Ġ 2 0 čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). set DateFormat (" yyyy - MM - dd "). create () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġwhen Ġ( gateway Info ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPay Gateway Info . PRO DU CTION Ġ-> Ġresources . getString ( R . string . prod _ url ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPay Gateway Info . SAN DB OX Ġ-> Ġresources . getString ( R . string . sandbox _ url ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit . Builder (). baseUrl ( url ). client ( ok HttpClient ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Client čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊč Ċ }