package Ġorg . library simpl ified . audio book . http Ċ Ċ import Ġokhttp 3 . Cache Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . File Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠThe Ġdefault ĠHTTP Ġclients . Ċ Ġ*/ Ċ Ċ object ĠAudio Book HTTP Clients Ġ{ ĊĊĠ Ġprivate Ġval Ġlogger Ġ= ĊĠĠĠ ĠLoggerFactory . getLogger ( Audio Book HTTP Clients :: class . java ) ĊĊĠ Ġprivate Ġval Ġtimeout Ġ= ĊĠĠĠ ĠPair ( 3 L , ĠTimeUnit . MIN UTES ) ĊĊĠ Ġprivate Ġval Ġdefault Client Ġ= ĊĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠ Ġ. connect Timeout ( this . timeout . first , Ġthis . timeout . second ) ĊĠĠĠĠĠ Ġ. call Timeout ( this . timeout . first , Ġthis . timeout . second ) ĊĠĠĠĠĠ Ġ. read Timeout ( this . timeout . first , Ġthis . timeout . second ) ĊĠĠĠĠĠ Ġ. write Timeout ( this . timeout . first , Ġthis . timeout . second ) ĊĠĠĠĠĠ Ġ. add Interceptor ( Audio Book HTTP Interceptor ( this . logger )) ĊĠĠĠĠĠ Ġ. build () ĊĊĠ Ġprivate Ġval Ġcaching Clients : ĠHashMap < String , ĠOk HttpClient > Ġ= Ġhash Map Of () ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThe Ġdefault ĠHTTP Ġclient . ĊĠĠ Ġ*/ ĊĊĠ Ġfun Ġdefault Client (): ĠOk HttpClient Ġ= ĊĠĠĠ Ġthis . default Client ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠA Ġcaching ĠHTTP Ġclient . ĊĠĠ Ġ*/ ĊĊĠ Ġfun Ġcaching Client ( cache Directory : ĠFile ): ĠOk HttpClient Ġ{ ĊĠĠĠ Ġ// ĠIf Ġa Ġclient Ġhas Ġalready Ġbeen Ġconfigured Ġfor Ġthe Ġgiven Ġcache Ġdirectory , Ġreturn Ġit . ĊĊĠĠĠ Ġval Ġcache Path Ġ= Ġcache Directory . canonical Path ĊĠĠĠ Ġval Ġclient Ġ= Ġcaching Clients [ cache Path ] ĊĊĠĠĠ Ġif Ġ( client Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġclient ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠOtherwise , Ġconfigure Ġa Ġcaching Ġclient Ġbased Ġon Ġthe Ġdefault Ġclient , Ġand Ġmemo ize Ġit . ĊĊĠĠĠ Ġreturn Ġdefault Client . newBuilder () ĊĠĠĠĠĠ Ġ. cache ( ĊĠĠĠĠĠĠĠ ĠCache ( ĊĠĠĠĠĠĠĠĠĠ ĠFile ( cache Directory , Ġ" audio book - http "), ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠA Ġsmall Ġ( 1 6 ĠKB ) Ġcache Ġshould Ġsuff ice , Ġas Ġthe Ġcache Ġis Ġcurrently Ġonly Ġused Ġfor Ġa Ġfeed books ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġcertificate Ġ( about Ġ 1 ĠKB ). ĊĠĠĠĠĠĠĠĠĠĠ 1 6 L Ġ* Ġ 1 0 2 4 L ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ). build () ĊĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠ Ġcaching Clients . put ( cache Path , Ġit ) ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ