package Ġcom . et ern al . base . http Ċ Ċ import Ġcom . et ern al . base . app . App Ċ import Ġokhttp 3 . Cache Ċ import Ġokhttp 3 . Cache Control Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġjava . io . File Ċ Ċ object ĠRet rofit Client Ġ: ĠBase Ret rofit Client () Ġ{ ĊĠĠĠ Ġval Ġservice Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġget Service ( ApiService :: class . java , Api . BASE _ URL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Builder ( builder : ĠOk HttpClient . Builder ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġhttp Cache Directory Ġ= ĠFile ( App . CONTEXT . cacheDir , Ġ" responses ") ĊĠĠĠĠĠĠĠ Ġval Ġcache Size Ġ= Ġ 1 0 Ġ* Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 L Ġ// Ġ 1 0 ĠM iB ĊĠĠĠĠĠĠĠ Ġval Ġcache Ġ= ĠCache ( http Cache Directory , Ġcache Size ) ĊĠĠĠĠĠĠĠ Ġbuilder . cache ( cache ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠ Ġ. cookie Jar ( cookie Jar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrequest Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Net Work Utils . is Network Available ( App . CONTEXT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Control ( Cache Control . FORCE _ CACHE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Net Work Utils . is Network Available ( App . CONTEXT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Age Ġ= Ġ 6 0 Ġ* Ġ 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove Header (" Pr agma ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Cache - Control ", Ġ" public , Ġmax - age =$ max Age ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax St ale Ġ= Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 2 4 Ġ* Ġ 2 8 Ġ// Ġtol erate Ġ 4 - week s Ġstale ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove Header (" Pr agma ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Cache - Control ", Ġ" public , Ġonly - if - cached , Ġmax - st ale =$ max St ale ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }