/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠZ en Key , ĠLLC . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . x ci . zen key . sdk . internal . network . stack Ċ Ċ import Ġandroid . net . Uri Ċ Ċ import Ġjava . net . Malformed URLException Ċ import Ġjava . net . URL Ċ import Ġjava . util . HashMap Ċ Ċ /** Ċ Ġ* ĠA Ġmodel Ġclass Ġrepresenting Ġa Ġgeneric ĠHttp Ġrequest . Ċ Ġ*/ Ċ internal Ġclass ĠHttpRequest Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġbuilder : ĠBuilder Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ[ HttpMethod ] Ġto Ġuse . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġ[ HttpMethod ] Ġto Ġuse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval Ġmethod : ĠHttpMethod ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ[ URL ] Ġto Ġuse . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġ[ URL ] Ġto Ġuse . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval ĠbaseUrl : ĠString ĊĠĠĠ Ġinternal Ġval Ġurl : ĠURL ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġbuild Connection For Ġtimeout Ġto Ġuse . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġbuild Connection For Ġtimeout Ġto Ġuse . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval Ġconnect Timeout : ĠInt ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġread Ġtimeout Ġto Ġuse . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġread Ġtimeout Ġto Ġuse . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval Ġread Timeout : ĠInt ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġheaders Ġfor Ġthis Ġrequest . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġ[ HashMap ] Ġrepresenting Ġthe Ġheaders Ġof Ġthis Ġrequest . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval Ġheaders : ĠHashMap < String , ĠString > ĊĠĠĠ Ġprivate Ġval Ġparams : ĠHashMap < String , ĠString > ĊĠĠĠ Ġprivate Ġval Ġuse Caches : ĠBoolean ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . method Ġ= Ġbuilder . method ĊĠĠĠĠĠĠĠ Ġthis . connect Timeout Ġ= Ġbuilder . connect Timeout ĊĠĠĠĠĠĠĠ Ġthis . read Timeout Ġ= Ġbuilder . read Timeout ĊĠĠĠĠĠĠĠ Ġthis . baseUrl Ġ= Ġbuilder . baseUrl ĊĠĠĠĠĠĠĠ Ġthis . headers Ġ= Ġbuilder . headers ĊĠĠĠĠĠĠĠ Ġthis . params Ġ= Ġbuilder . params ĊĠĠĠĠĠĠĠ Ġthis . use Caches Ġ= Ġbuilder . use Caches ĊĠĠĠĠĠĠĠ Ġthis . url Ġ= Ġbuilder . url ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġclass Ġis Ġused Ġto ĠBuild Ġ[ HttpRequest ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠBuilder ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor Ġfor Ġ[ Builder ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmethod Ġthe Ġ[ HttpMethod ] Ġfor Ġthis Ġrequest . ĊĠĠĠĠ Ġ* Ġ@ param ĠbaseUrl Ġthe Ġbase ĠUrl Ġfor Ġthis Ġrequest . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ( internal Ġval Ġmethod : ĠHttpMethod , Ġinternal Ġval ĠbaseUrl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġconnect Timeout Ġ= ĠDEFAULT _ CONNECT _ TIMEOUT ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġread Timeout Ġ= ĠDEFAULT _ READ _ TIMEOUT ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġuse Caches Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġurl : ĠURL ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġheaders Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġparams Ġ= ĠHashMap < String , ĠString >() ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġa Ġbuild Connection For Ġtime Ġout Ġfor Ġthe Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġconnect Timeout Ġthe Ġtime Ġout Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthis Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġconnect Timeout ( connect Timeout : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . connect Timeout Ġ= Ġconnect Timeout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġa Ġread Ġtime Ġout Ġfor Ġthe Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġread Timeout Ġthe Ġtime Ġout Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthis Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġread Timeout ( read Timeout : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . read Timeout Ġ= Ġread Timeout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdd Ġa ĠHeader Ġto Ġthe Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey Ġthe Ġheader Ġkey . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe Ġheader Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthis Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith Header ( key : ĠString , Ġvalue : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . headers [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdd Ġa ĠQuery Ġparameter ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey Ġthe Ġparameter Ġkey ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe Ġparameter Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthis Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith QueryParam ( key : ĠString , Ġvalue : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . params [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdd Ġa ĠQuery Ġparameter Ġif Ġvalue Ġisn 't Ġnull ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey Ġthe Ġparameter Ġkey ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe Ġparameter Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthis Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwith Optional QueryParam ( key : ĠString , Ġvalue : ĠString ?): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġthis . with QueryParam ( key , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSkip Ġthe Ġcache Ġfor Ġthis Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthis Ġ[ Builder ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġskip Cache (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . use Caches Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBuild Ġthe Ġ[ HttpRequest ] ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġbuilt Ġ[ HttpRequest ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Malformed URLException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠHttpRequest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠUri . parse ( baseUrl ). build Up on () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġparams . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append QueryParameter ( key , Ġparams [ key ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= ĠURL ( builder . build (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHttpRequest ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ CONNECT _ TIMEOUT Ġ= Ġ 1 5 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ READ _ TIMEOUT Ġ= Ġ 1 5 0 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( baseUrl : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuilder ( HttpMethod . GET , ĠbaseUrl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ