package Ġcom . play one . mobile . remote . service Ċ Ċ import Ġcom . google . gson . Field Naming Policy Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠProvide Ġ" make " Ġmethods Ġto Ġcreate Ġinstances Ġof Ġ[ Http Service Factory ] Ċ Ġ* Ġand Ġits Ġrelated Ġdependencies , Ġsuch Ġas ĠOk HttpClient , ĠGson , Ġetc . Ċ Ġ*/ Ċ abstract Ġclass ĠHttp Service Factory < out ĠS >: Service Factory < S > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmake Service ( isDebug : ĠBoolean ): ĠS Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġmake Service ( isDebug : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbaseUrl : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Timeout : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Timeout : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintercept ors : ĠArray < Interceptor >): ĠS ĊĊĊĠĠĠ Ġprotected Ġfun Ġmake Ok HttpClient ( isDebug : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Timeout : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Timeout : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintercept ors : ĠArray < Interceptor >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOk HttpClient . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interceptor ( make Logging Interceptor ( isDebug )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isDebug ) Ġintercept ors . forEach Ġ{ Ġadd Interceptor ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Timeout ( connect Timeout , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Timeout ( read Timeout , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () ĊĊĠĠĠ Ġprotected Ġfun Ġmake Gson () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Len ient () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set DateFormat (" yyyy - MM - dd ' T ' HH : mm : ss . SS S ' Z '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setField Naming Policy ( Field Naming Policy . LOWER _ CASE _ WITH _ UNDER SCO RES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠ Ġprotected Ġfun Ġmake Logging Interceptor ( isDebug : ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= Ġif Ġ( isDebug ) ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠHttp Logging Interceptor . Level . NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ }