package Ġcom . rax den stud ios . commons . okhttp 3 Ċ Ċ import Ġokhttp 3 . Cache Control Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Response Ċ import Ġjava . io . IOException Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠCache Offline Interceptor ( ĊĠ Ġprivate Ġval Ġcache Control : ĠCache Control , ĊĠ Ġprivate Ġval Ġis Network Available : Ġ() Ġ-> ĠBoolean , Ċ ) Ġ: ĠInter ceptor Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠHEADER _ PR AG MA Ġ= Ġ" Pr agma " ĊĠĠĠ Ġprivate Ġconst Ġval ĠHEADER _ CACHE _ CONTROL Ġ= Ġ" Cache - Control " ĊĠĠĠ Ġprivate Ġconst Ġval ĠMAX _ ST ALE Ġ= Ġ 7 ĊĊĠĠĠ Ġfun Ġdefault ( ĊĠĠĠĠĠ Ġis Network Available : Ġ() Ġ-> ĠBoolean , ĊĠĠĠ Ġ) Ġ= ĠCache Offline Interceptor ( ĊĠĠĠĠĠ Ġinit Cache Control ( MAX _ ST ALE ), ĊĠĠĠĠĠ Ġis Network Available , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġwith Max St ale ( ĊĠĠĠĠĠ Ġstale : ĠInt , ĊĠĠĠĠĠ Ġis Network Available : Ġ() Ġ-> ĠBoolean , ĊĠĠĠ Ġ) Ġ= ĠCache Offline Interceptor ( ĊĠĠĠĠĠ Ġinit Cache Control ( st ale ), ĊĠĠĠĠĠ Ġis Network Available , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġinit Cache Control ( st ale : ĠInt ) Ġ= ĠCache Control . Builder () ĊĠĠĠĠĠ Ġ. max St ale ( st ale , ĠTimeUnit . DAYS ) ĊĠĠĠĠĠ Ġ. build () ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠ Ġvar Ġrequest Ġ= Ġchain . request () ĊĊĠĠĠ Ġif Ġ(! is Network Available ()) Ġ{ ĊĠĠĠĠĠ Ġrequest Ġ= Ġchain . request (). newBuilder () ĊĠĠĠĠĠĠĠ Ġ. remove Header ( HEADER _ PR AG MA ) ĊĠĠĠĠĠĠĠ Ġ. remove Header ( HEADER _ CACHE _ CONTROL ) ĊĠĠĠĠĠĠĠ Ġ. cache Control ( cache Control ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġchain . proceed ( request ) ĊĠ Ġ} Ċ } Ċ