package Ġcom . project . twitter . di . modules Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġcom . project . twitter . Build Config Ċ import Ġcom . project . twitter . app . App Ċ import Ġcom . project . twitter . repository . api . ApiService Ċ import Ġcom . project . twitter . repository . api . network . LiveData Call Adapter Factory For Ret rofit Ċ import Ġcom . project . twitter . repository . session . User Session Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġokhttp 3 .* Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . adapter . rx java 3 . Rx Java 3 Call Adapter Factory Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . io . IOException Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠMe h ro z Ġon Ġ 2 9 , Aug ust , 2 0 2 0 Ċ Ġ*/ Ċ Ċ @ Module ( includes Ġ= Ġ[ Activity Module :: class , ĠViewModel Module :: class ]) Ċ class ĠApp Module Ġ{ ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStatic Ġvariables Ġto Ġhold Ġbase Ġurl 's Ġetc . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBASE _ URL Ġ= ĠBuild Config . BASE _ URL ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides ĠApi Services Ġclient Ġfor ĠRet rofit ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Service ( ok HttpClient : ĠOk HttpClient ): ĠApi Service Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( LiveData Call Adapter Factory For Ret rofit ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( ApiService :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġget Ok HttpClient ( http Logging Interceptor : ĠHttp Logging Interceptor ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġok HttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġok HttpClient . connect Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġok HttpClient . read Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġok HttpClient . write Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġok HttpClient . add Interceptor ( http Logging Interceptor ) ĊĠĠĠĠĠĠĠ Ġreturn Ġok HttpClient . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġget Http Logging Interceptor (): ĠHttp Logging Interceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhttp Logging Interceptor Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġhttp Logging Interceptor . setLevel ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠĠĠĠĠ Ġreturn Ġhttp Logging Interceptor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplication Ġapplication Ġlevel Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Context ( application : ĠApp ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapplication . application Context ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplication Ġresource Ġprovider , Ġso Ġthat Ġwe Ġcan Ġget Ġthe ĠDrawable , ĠColor , ĠString Ġetc Ġat Ġruntime ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovides Resources ( application : ĠApp ): ĠResources Ġ= Ġapplication . resources Ċ Ċ } Ċ