package Ġio . pi ano . android . composer Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Restrict To Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ import Ġretrofit 2 . create Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Restrict To ( Restrict To . Scope . LIBRARY ) Ċ internal Ġclass ĠDependencies Provider Ġprivate Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġaid : ĠString , ĊĠĠĠ Ġendpoint : ĠComposer . Endpoint Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġprefs Storage Ġ= ĠP refs Storage ( context ) ĊĠĠĠ Ġprivate Ġval Ġuser Agent Ġ= Ġ" P iano Ġcomposer ĠSDK Ġ( Android Ġ${ Build . VERSION . RELEASE } Ġ( Build Ġ${ Build . ID }); Ġ" Ġ+ ĊĠĠĠĠĠĠĠ Ġ"${ context . application Context . device Type ()} Ġ${ Build . MAN U FACT UR ER }/${ Build . MODEL })" ĊĊĠĠĠ Ġprivate Ġval Ġok HttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġ. read Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġ. write Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġ. add Interceptor ( UserAgent Interceptor ( userAgent )) ĊĠĠĠĠĠĠĠ Ġ. add Interceptor ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Logging Interceptor (). setLevel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG Ġ|| Ġis Log Http Set ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠHttp Logging Interceptor . Level . NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġprivate Ġval Ġm oshi Ġ= ĠM oshi . Builder () ĊĠĠĠĠĠĠĠ Ġ. add ( Custom Parameters Json Adapter . FACTORY ) ĊĠĠĠĠĠĠĠ Ġ. add ( Event Json Adapter Factory ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġval Ġapi : ĠApi Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. baseUrl ( endpoint . composer Host ) ĊĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( M oshi Converter Factory . create ( mos hi )) ĊĠĠĠĠĠĠĠ Ġ. build (). create () ĊĊĠĠĠ Ġinternal Ġval Ġcomposer : ĠComposer Ġ= ĠComposer ( ĊĠĠĠĠĠĠĠ Ġapi , ĊĠĠĠĠĠĠĠ ĠHttp Helper ( Experience Ids Provider ( prefs Storage , ĠPage View Id Provider ), Ġprefs Storage , Ġm oshi , Ġuser Agent ), ĊĠĠĠĠĠĠĠ Ġprefs Storage , ĊĠĠĠĠĠĠĠ Ġaid , ĊĠĠĠĠĠĠĠ Ġendpoint ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġprivate Ġinline Ġfun ĠContext . device Type () Ġ= Ġif Ġ( resources . getBoolean ( R . bool . is Tablet )) Ġ" Tablet " Ġelse Ġ" Mobile " ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠDependencies Provider ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġinit ( context : ĠContext , Ġaid : ĠString , Ġendpoint : ĠComposer . Endpoint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠDependencies Provider ( context , Ġaid , Ġendpoint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠDependencies Provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcheckNotNull ( instance ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" P iano ĠComposer ĠSDK Ġis Ġnot Ġinitialized ! ĠMake Ġsure Ġthat Ġyou Ġinitialize Ġit " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance Ġas ĠDependencies Provider ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ