package Ġcom . e gor iku . rad iot ok . data . ret rofit Ċ Ċ import Ġcom . e gor iku . rad iot ok . common . ext . log D Ċ import Ġcom . e gor iku . rad iot ok . domain . datasource . IR ad io Dns Server Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Response Ċ import Ġjava . io . IOException Ċ Ċ class ĠHost Selection Interceptor ( ĊĠĠĠ Ġprivate Ġval Ġradio Dns Server : ĠI Radio Dns Server Ċ ) Ġ: ĠInter ceptor Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġhost : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradio Dns Server . lookup (). random () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġchain . request () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( request . url . host Ġ== Ġ" github . com ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog D (" base Ġhost : Ġ$ host ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Url Ġ= Ġrequest . url . newBuilder (). host ( host ). build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( request . newBuilder (). url ( new Url ). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }