package Ġcom . put r ash . oc bc mobile . di Ċ Ċ import Ġcom . put r ash . common . Constants . AUTHORIZATION Ċ import Ġcom . put r ash . common . preferences . Preferences Helper . get Ċ import Ġcom . put r ash . common . preferences . Preferences Key Ċ import Ġcom . put r ash . data . Api Ċ import Ġcom . put r ash . data . Build Config . BASE _ URL Ċ import Ġcom . put r ash . oc bc mobile . App Ċ import Ġokhttp 3 . Authenticator Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġorg . k oin . dsl . module Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ var Ġapp Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġfactory Ġ{ Ġprovide Http Logging () Ġ} ĊĠĠĠ Ġfactory Ġ{ Ġprovide Authenticator () Ġ} ĊĠĠĠ Ġsingle Ġ{ Ġprovide Ok HttpClient ( get (), Ġget ()) Ġ} ĊĠĠĠ Ġsingle Ġ{ Ġprovide Ret rofit ( get ()) Ġ} Ċ } Ċ Ċ fun Ġprovide Http Logging () Ġ= ĠHttp Logging Interceptor (). apply Ġ{ ĊĠĠĠ Ġlevel Ġ= ĠHttp Logging Interceptor . Level . BODY Ċ } Ċ Ċ fun Ġprovide Authenticator () Ġ= ĠAuth enticator Ġ{ Ġ_, Ġresponse Ġ-> ĊĠĠĠ Ġval Ġtoken Ġ= ĠApp . instance . preferences [ Preferences Key . AUTH _ KEY , Ġ" "] ĊĠĠĠ Ġif Ġ( token . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn @ Authenticator Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( response . request . header ( AUTHORIZATION ) Ġ!= Ġtoken ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn @ Authenticator Ġresponse . request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( AUTHORIZATION , Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn @ Authenticator Ġnull Ċ } Ċ Ċ fun Ġprovide Ok HttpClient ( logging Interceptor : ĠHttp Logging Interceptor , Ġauth enticator : ĠAuth enticator ) Ġ= ĠOk HttpClient (). newBuilder () ĊĠĠĠ Ġ. add Interceptor ( logging Interceptor ) ĊĠĠĠ Ġ. auth enticator ( auth enticator ) ĊĠĠĠ Ġ. build () Ċ Ċ fun Ġprovide Ret rofit ( ok Http : ĠOk HttpClient ): ĠApi Ġ= ĠRet rofit . Builder () ĊĠĠĠ Ġ. baseUrl ( BASE _ URL ) ĊĠĠĠ Ġ. client ( ok Http ) ĊĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠ Ġ. build () ĊĠĠĠ Ġ. create ( Api :: class . java ) ĊĊ