package Ġcom . github . md fh . f lick . data . remote . intercept ors Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . github . md fh . f lick . data . pref . Pref Repository Ċ import Ġcom . github . md fh . f lick . utils . Constants Ċ import Ġjava . io . IOException Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Response Ċ Ċ @ Singleton Ċ class ĠBasic Auth Interceptor Ġ@ Inject Ċ constructor ( private Ġval Ġcontext : ĠContext , Ġprivate Ġval Ġpreferences Helper : ĠPref Repository ) Ġ: ĠInter ceptor Ġ{ ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠĠĠĠ Ġ/* Ġval Ġrequest Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠ Ġreturn Ġchain . proceed ( request ) */ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Inside Ġinterceptor ") ĊĠĠĠĠĠĠĠ Ġ/* if Ġ(! Network Utils . is Network Connected ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" No Ġinternet , Ġthrowing Ġexception ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNo Internet Exception (" No ĠInternet ") ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠ Ġvar Ġrequest With ApiKey Ġ= Ġchain . request (). url (). newBuilder (). add QueryParameter (" api _ key ", ĠConstants . API _ KEY ). build () ĊĊĠĠĠĠĠĠĠ Ġval Ġauthenticated Request Ġ= Ġchain . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Authorization ", Ġ" Bearer Ġ${ Constants . API _ KEY } "). build () ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġchain . request (). newBuilder (). url ( request With ApiKey ). header (" Authorization ", Ġ" Bearer Ġ${ Constants . API _ KEY } "). build () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġchain . proceed ( request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Basic Auth Interceptor " ĊĠĠĠ Ġ} Ċ } Ċ