package Ġre net ik . android . network . okhttp 3 Ċ Ċ import Ġcom . android networking . error . AN Error Ċ import Ġcom . android networking . interfaces . Ok HttpResponse And String RequestListener Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Response Ċ import Ġre net ik . android . network . process . CS Http Process Ċ import Ġre net ik . android . network . data . CS HttpResponse Data Ċ import Ġre net ik . android . core . lang . catch Error Ċ import Ġre net ik . android . core . lang . catch Error Return Ċ import Ġre net ik . android . core . logging . CS Log . log Info Ċ import Ġjava . io . IOException Ċ Ċ const Ġval ĠAP PLICATION _ ERROR Ġ= Ġ" Application Ġerror Ġor Ġinvalid Ġdata " Ċ Ċ class ĠC SO k HttpResponse Listener < Data Ġ: ĠCS HttpResponse Data >( ĊĠĠĠ Ġprivate Ġval Ġclient : ĠOk HttpClient , Ġprivate Ġval Ġprocess : ĠCS Http Process < Data >) ĊĠĠĠ Ġ: ĠOk HttpResponse And String RequestListener Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Response ( http : ĠResponse , Ġcontent : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Info ("${ process . url } Ġ${ http . code }, Ġ${ http . message }, Ġ$ content ") ĊĠĠĠĠĠĠĠ Ġprocess . data !!. on HttpResponse ( http . code , Ġhttp . message , Ġcontent ) ĊĠĠĠĠĠĠĠ Ġcatch Error Return < Unit , ĠException >({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( process . data !!. success ) Ġprocess . success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġon ResponseError ( process . data !!. message , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġexception Ġ-> Ġon ResponseError ( APPLICATION _ ERROR , Ġexception ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠAN Error ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprocess . data !!. on HttpResponse ( error . errorCode , Ġerror . error Body Ġ?: Ġerror . error Detail , Ġnull ) ĊĠĠĠĠĠĠĠ Ġon ResponseError ( error . error Body Ġ?: Ġerror . error Detail , Ġerror ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon ResponseError ( message : ĠString ?, Ġexception : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinvalidate ( process . url !! ) ĊĠĠĠĠĠĠĠ Ġprocess . failed ( exception , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinvalidate ( url : ĠString ) Ġ= Ġcatch Error < IOException > Ġ{ ĊĠĠĠĠĠĠĠ Ġclient . cache ?. urls ()?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( this . hasNext ()) Ġif Ġ( this . next (). contains ( url )) Ġthis . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }