/* Ċ Ġ* Ġ Ġ--- license - start Ċ Ġ* Ġ Ġeu - digital - green - certificates Ġ/ Ġdg ca - verifier - app - android Ċ Ġ* Ġ Ġ--- Ċ Ġ* Ġ ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠT - Systems ĠInternational ĠGmbH Ġand Ġall Ġother Ġcontributors Ċ Ġ* Ġ Ġ--- Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ġ Ġ--- license - end Ċ Ġ* Ċ Ġ* Ġ ĠCreated Ġby Ġmy kh ai lo . nest er Ġon Ġ 4 / 2 4 / 2 1 Ġ 1 : 4 1 ĠPM Ċ Ġ*/ Ċ Ċ package Ġit . min ister ode ll as al ute . ver ific aC 1 9 . di Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . google . gson . Gson Ċ import Ġdagger . Lazy Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . android . qual ifiers . ApplicationContext Ċ import Ġdagger . h ilt . components . Singleton Component Ċ import Ġit . min ister ode ll as al ute . ver ific aC 1 9 . Build Config Ċ import Ġit . min ister ode ll as al ute . ver ific aC 1 9 . data . remote . ApiService Ċ import Ġit . min ister ode ll as al ute . ver ific aC 1 9 . network . Header Interceptor Ċ import Ġokhttp 3 .* Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ Ċ private Ġconst Ġval ĠCONNECT _ TIMEOUT Ġ= Ġ 3 0 L Ċ Ċ @ Install In ( Singleton Component :: class ) Ċ @ Module Ċ object ĠNetwork Module Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġinternal Ġfun Ġprovide Cache (@ ApplicationContext Ġcontext : ĠContext ): ĠCache Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcache Size Ġ= Ġ( 1 0 Ġ* Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 ). to Long () Ġ// Ġ 1 0 ĠMB ĊĠĠĠĠĠĠĠ Ġreturn ĠCache ( context . cacheDir , Ġcache Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġinternal Ġfun Ġprovide Ok httpClient ( cache : ĠCache ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= Ġget HttpClient ( cache ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interceptor ( Header Interceptor ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd Logging ( httpClient ) ĊĠĠĠĠĠĠĠ Ġ// add Certificate SHA ( httpClient ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠhttpClient . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġinternal Ġfun Ġprovide Ret rofit ( ok HttpClient : ĠLazy < Ok HttpClient >): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Ret rofit ( ok HttpClient ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġinternal Ġfun Ġprovide ApiService ( ret rofit : ĠRet rofit ): ĠApi Service Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( ApiService :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget HttpClient ( cache : ĠCache ): ĠOk HttpClient . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache ( cache ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( CONNECT _ TIMEOUT , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( CONNECT _ TIMEOUT , ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Logging ( httpClient : ĠOk HttpClient . Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogging Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogging . level Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient . add Interceptor ( logging ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Certificate SHA ( httpClient : ĠOk HttpClient . Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcertificate P inner Ġ= ĠCertificate P inner . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" it . min ister ode ll as al ute . ver ific aC 1 9 ", ĠBuild Config . CER TIFICATE _ SHA ) ĊĠĠĠĠĠĠĠ ĠhttpClient . certificate P inner ( certificate P inner . build ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Ret rofit ( ok HttpClient : ĠLazy < Ok HttpClient >): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( Gson ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Build Config . BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. call Factory Ġ{ Ġok HttpClient . get (). new Call ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Published Api Ċ internal Ġinline Ġfun ĠRet rofit . Builder . call Factory ( ĊĠĠĠ Ġcross inline Ġbody : Ġ( Request ) Ġ-> ĠCall Ċ ) Ġ= Ġcall Factory ( object Ġ: ĠCall . Factory Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġnew Call ( request : ĠRequest ): ĠCall Ġ= Ġbody ( request ) Ċ }) Ċ