package Ġcom . bar is atal ay . coin tracker . helper Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Response Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ class ĠUrl Provider Interceptor : ĠInter ceptor Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Url Provider Interceptor " ĊĠĠĠ Ġprivate Ġvar Ġnew RestApi : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġrequest Ġ= Ġchain . request () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( new RestApi )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Url Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList ( Arrays . asList (* new RestApi !!. split ("/ ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array ())) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Scheme Ġ= Ġnew Url [ 0 ]. replace (" :", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Host Ġ= Ġnew Url [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Builder Ġ= Ġrequest . url (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scheme ( new Scheme ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. host ( new Host ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( url Builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Url Ġ= Ġrequest . url (). toString (). substring ( 0 , Ġrequest . url (). toString (). indexOf (" api / Method ")) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! active Url . equals ( new RestApi !! , Ġignore Case Ġ= Ġtrue )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= ĠStringBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . append ("\ n \ n ******************************** \ n ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . append (" Old ĠApi ĠAddress : Ġ"). append ( active Url ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Encoded Array Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . url (). toString (). substring ( request . url (). toString (). indexOf (" api / Method ")) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. split ("/ ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Typed Array () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Segment List Ġ= ĠArrayList ( Arrays . asList (* base Encoded Array )) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Url Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList ( Arrays . asList (* new RestApi !!. split ("/ ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array ())) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Scheme Ġ= Ġnew Url [ 0 ]. replace (" :", Ġ"") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Host Ġ= Ġnew Url [ 2 ] Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Builder Ġ= Ġrequest . url (). newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scheme ( new Scheme ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. host ( new Host ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġrequest . url (). encoded Path Segments (). size Ġ- Ġ 1 Ġdown To Ġ 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Builder . remove Path Segment ( i ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Url . size Ġ> Ġ 3 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġnew Url . size Ġ- Ġ 1 Ġdown To Ġ 3 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Builder . add Encoded Path Segment ( new Url [ i ]) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġbase Segment List . indices ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Builder . add Encoded Path Segment ( base Segment List [ i ]) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( url Builder . build ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . append ("\ n New ĠApi ĠAddress : Ġ"). append ( new RestApi ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . append ("\ n ******************************** \ n ") Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġlogger . toString ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġchain . proceed ( request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset New RestApi ( new RestApi : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . new RestApi Ġ= Ġnew RestApi ĊĠĠĠ Ġ} Ċ Ċ }