package Ġx let . android . samples . kotlin sample . di . modules Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġokhttp 3 . Cipher Suite Ċ import Ġokhttp 3 . Connection Spec Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Tls Version Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġx let . android . samples . kotlin sample . Base Application Ċ import Ġx let . android . samples . kotlin sample . Build Config Ċ import Ġx let . android . samples . kotlin sample . di . components . Loading Component Ċ import Ġx let . android . samples . kotlin sample . di . utils . ApplicationContext Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton ĊĊ Ċ @ Module ( sub components Ġ= ĠarrayOf ( Loading Component :: class )) Ċ class ĠApp Module Ġ@ Inject Ġconstructor ( val Ġapp : ĠBase Application ) Ġ{ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Base Application () Ġ: ĠBase Application Ġ= Ġapp ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ ApplicationContext ĊĠĠĠ Ġfun Ġprovide ApplicationContext (): ĠContext Ġ= Ġapp . application Context Ċ } Ċ Ċ @ Module Ċ class ĠNetwork Module Ġ@ Inject Ġconstructor ( private Ġval ĠbaseUrl : ĠString ) Ġ{ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Gson (): ĠGson Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠ Ġ// ĠDo Ġcustom Ġhere ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Ok HttpClient (): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( Http Logging Interceptor (). setLevel ( Http Logging Interceptor . Level . BODY )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġspec Builder Ġ= ĠConnection Spec . Builder ( Connection Spec . MO DER N _ TLS ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT _ WATCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspec Builder . tls Versions ( Tls Version . TLS _ 1 _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cipher Su ites ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ ECD SA _ WITH _ AES _ 1 2 8 _ GCM _ SHA 2 5 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ RSA _ WITH _ AES _ 1 2 8 _ GCM _ SHA 2 5 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ D HE _ RSA _ WITH _ AES _ 1 2 8 _ GCM _ SHA 2 5 6 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIt Ġshould ĠL arger Ġthan ĠBuild . VERSION _ CODES . H ONE Y COMB Ġ( SDK Ġ 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspec Builder . tls Versions ( Tls Version . TLS _ 1 _ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cipher Su ites ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ ECD SA _ WITH _ AES _ 1 2 8 _ CBC _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ RSA _ WITH _ AES _ 1 2 8 _ CBC _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ D HE _ RSA _ WITH _ AES _ 1 2 8 _ CBC _ SHA ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . connection Specs ( listOf ( spec Builder . build (), ĠConnection Spec . CLE ART EXT )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Ret rofit ( gson : ĠGson , Ġok HttpClient : ĠOk HttpClient ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġbuilder . baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} Ċ Ċ }