package Ġcom . kos ala am Inc . kos ala am . model . network Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . kos ala am Inc . kos ala am . global . Application Ċ import Ġcom . kos ala am Inc . kos ala am . model . network . api . K os ala am API Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Response Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . io . IOException ĊĊ Ċ object ĠRet rofit Client { Ċ // ĠĠĠ Ġval Ġinterceptor : ĠAccess Token Interceptor Ġ= ĠAccess Token Interceptor () Ċ // ĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient . Builder (). add Interceptor ( interceptor ). build () ĊĊĠĠĠ Ġvar Ġclient : ĠOk HttpClient Ġ= ĠOk HttpClient . Builder (). add Interceptor ( http Logging Interceptor () !! ). build () ĊĠĠĠ Ġprivate Ġval Ġretrofit Ġ: ĠRet rofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. baseUrl ( Application . BASE _ URL ) ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Null On Empty Converter Factory ()) ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġgson Ġ: ĠGson Ġ= ĠĠ ĠGson Builder (). set Len ient (). create () ĊĠĠĠ Ġprivate Ġval Ġretrofit Add Ġ: ĠRet rofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. baseUrl ( Application . BASE _ URL ) ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) Ċ // ĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval ĠAPI service Ġ: ĠK os ala am API Ġ= Ġretrofit . create ( K os ala am API :: class . java ) ĊĊĠĠĠ Ġval ĠAPI service Add Ġ: ĠK os ala am API Ġ= Ġretrofit Add . create ( K os ala am API :: class . java ) ĊĊĠĠĠ Ġclass ĠAccess Token Interceptor Ġ: ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ) Ġ: ĠResponse Ġ= Ġwith ( chain ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= "" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Request Ġ= Ġrequest (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Authorization ", Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproceed ( new Request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhttp Logging Interceptor (): ĠHttp Logging Interceptor ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinterceptor Ġ= ĠHttp Logging Interceptor ( object Ġ: ĠHttp Logging Interceptor . Logger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlog ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" My GitHub Data Ġ: ", Ġmessage Ġ+ Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġinterceptor . setLevel ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠ Ġ} Ċ } Ċ