package Ġcom . third w avel ist . co fici ando . core . di . modules Ċ Ċ import Ġandroid . net . Uri Ċ import Ġcom . google . gson . Field Naming Policy Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . Type Adapter Ċ import Ġcom . google . gson . stream . Json Reader Ċ import Ġcom . google . gson . stream . Json Token Ċ import Ġcom . google . gson . stream . Json Writer Ċ import Ġcom . third w avel ist . co fici ando . core . Build Config Ċ import Ġcom . third w avel ist . co fici ando . core . data . network . Cache Preference Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . components . Singleton Component Ċ import Ġokhttp 3 . Cache Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġokhttp 3 . logging . Http Logging Interceptor . Level Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module ( includes Ġ= Ġ[ Cache Module :: class ]) Ċ @ Install In ( Singleton Component :: class ) Ċ internal Ġobject ĠNetwork Module Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠUSER _ AGENT Ġ= Ġ" User - Agent " ĊĠĠĠ Ġprivate Ġconst Ġval ĠHEADER _ CACHE _ CONTROL Ġ= Ġ" Cache - Control " ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġinternal Ġfun Ġprovide Gson (): ĠGson Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter ( Uri :: class . java , Ġobject Ġ: ĠType Adapter < Uri ?> () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( to : ĠJson Writer , Ġvalue : ĠUri ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto . value ( value . toString ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( from : ĠJson Reader ): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( from . peek () Ġ== ĠJson Token . NULL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom . next Null (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom . next String (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( it . isEmpty ()) ĠUri . EMPTY Ġelse ĠUri . parse ( it ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setField Naming Policy ( Field Naming Policy . LOWER _ CASE _ WITH _ UNDER SCO RES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġinternal Ġfun Ġprovide Ok HttpClient ( cache : ĠCache , Ġcache Preference : ĠCache Preference ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. debug gable ( Build Config . DEBUG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. userAgent (" C of ici ando / Android ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Preference ( cache Preference ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache ( cache ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠOk HttpClient . Builder . debug gable ( debug Enabled : ĠBoolean ): ĠOk HttpClient . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Interceptor ( Http Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= Ġif Ġ( debug Enabled ) ĠLevel . BODY Ġelse ĠLevel . NONE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠOk HttpClient . Builder . userAgent ( userAgent : ĠString ): ĠOk HttpClient . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Interceptor Ġ{ Ġinterceptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . proceed ( interceptor . request (). let Ġ{ Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( USER _ AGENT , Ġuser Agent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. method ( request . method , Ġrequest . body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠOk HttpClient . Builder . cache Preference ( cache Preference : ĠCache Preference ): ĠOk HttpClient . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Network Interceptor Ġ{ Ġinterceptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . proceed ( interceptor . request ()). newBuilder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . header ( HEADER _ CACHE _ CONTROL , Ġcache Preference . online Cache Settings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ }