/* ĊĠĠĠ ĠCopyright Ġ 2 0 1 6 ĠD Ã¡n iel ĠS Ã³ ly om ĊĊĠĠĠ Ġ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 Ġds . vi olin . v 1 . datasource . networking Ċ Ċ import Ġds . vi olin . v 1 . datasource . base . Interrupt able Ċ import Ġds . vi olin . v 1 . datasource . networking . Http Params Ċ import Ġorg . json . simple . JSONArray Ċ import Ġorg . json . simple . JSONObject Ċ import Ġjava . io . PrintWriter Ċ import Ġjava . io . Writer Ċ import Ġjava . net . URL Encoder Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . security . Invalid Parameter Exception Ċ Ċ /** Ċ Ġ* Ġinterface Ġto Ġstream Ġpost Ġbody Ġinto Ġa Ġwriter Ċ Ġ* Ċ Ġ* Ġ@ property Ġcontent Length Ġlength Ġof Ġthe Ġcontent Ġor Ġ 0 Ġif Ġit Ġis Ġunknown Ġbefore Ġstreaming Ċ Ġ*/ Ċ interface ĠPost Body Stream er Ġ: ĠInterrupt able Ġ{ ĊĊĠĠĠ Ġvar Ġcontent Length : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġwrite Ġin Ġ[ writer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠwriteTo ( writer : ĠWriter ) Ċ } Ċ Ċ /** Ċ Ġ* Ġformat Ġget Ġquery Ġpath Ċ Ġ*/ Ċ class ĠGet Serializer Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreturn Ġurl encoded ĠGET Ġquery Ġpath Ġfrom Ġ[ params ]. get Params Ġwhich Ġcan Ġbe Ġa Ġ[ String ], Ġ[ JSONObject ] Ġor Ġ[ Map ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġformat ( params : ĠHttp Params ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġcreate KeyValue And Array String ( params . get Params , Ġparams . charset ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . length Ġ> Ġ 0 Ġ-> Ġ" ?" Ġ+ Ġret ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġa Ġ[ Post Body Stream er ] Ġwhich Ġwrites Ġa Ġurl Ġencoded Ġstring Ġcreated Ġfrom Ġparams Ċ Ġ* Ċ Ġ* Ġ@ property Ġformatted Body Ġis Ġthe Ġresult Ġfor Ġthe Ġstreaming Ġafter Ġthe Ġserial izing Ċ Ġ*/ Ċ class ĠPost Body Html Stream er ( params : ĠHttp Params ) Ġ: ĠPost Body Stream er Ġ{ ĊĊĠĠĠ Ġval Ġformatted Body : ĠString ĊĠĠĠ Ġoverride Ġvar Ġcontent Length : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġvar Ġinterrupted : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġun encoded Body Ġ= Ġwhen Ġ( params . post Params ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap < *, *> Ġ Ġ-> Ġcreate KeyValue And Array String ( params . post Params , Ġparams . charset , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠĠĠ Ġ-> Ġparams . post Params . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġformatted Body Ġ= ĠURL Encoder . encode ( un encoded Body , Ġparams . charset . name ()) ĊĠĠĠĠĠĠĠ Ġcontent Length Ġ= Ġformatted Body . toByteArray ( params . charset ). size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo ( writer : ĠWriter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwriter . write ( formatted Body ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġa Ġ[ Post Body Stream er ] Ġwhich Ġwrites Ġa Ġproper Ġhttp Ġpost Ġbody Ġcreated Ġfrom Ġurl Ġencoded Ġparams Ċ Ġ* Ċ Ġ* Ġ@ property Ġformatted Body Ġis Ġthe Ġresult Ġfor Ġthe Ġstreaming Ġafter Ġthe Ġserial izing Ċ Ġ*/ Ċ class ĠHttp Post Params Stream er ( params : ĠHttp Params ) Ġ: ĠPost Body Stream er Ġ{ ĊĊĠĠĠ Ġval Ġformatted Body : ĠString ĊĠĠĠ Ġoverride Ġvar Ġcontent Length : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġvar Ġinterrupted : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġformatted Body Ġ= Ġcreate KeyValue And Array String ( params . post Params , Ġparams . charset ) ĊĠĠĠĠĠĠĠ Ġcontent Length Ġ= Ġformatted Body . toByteArray ( params . charset ). size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo ( writer : ĠWriter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwriter . write ( formatted Body ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġa Ġ[ Post Body Stream er ] Ġwhich Ġwrites Ġa Ġstring Ġcreated Ġfrom Ġparams Ġvia ĠtoString Ċ Ġ* Ċ Ġ* Ġ@ property Ġformatted Body Ġis Ġthe Ġresult Ġfor Ġthe Ġstreaming Ġafter Ġthe Ġserial izing Ċ Ġ*/ Ċ class ĠPost String Stream er ( params : ĠHttp Params , Ġencoded : ĠBoolean Ġ= Ġfalse ) Ġ: ĠPost Body Stream er Ġ{ ĊĊĠĠĠ Ġval Ġformatted Body : ĠString ĊĠĠĠ Ġoverride Ġvar Ġcontent Length : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġvar Ġinterrupted : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! encoded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformatted Body Ġ= Ġparams . post Params . toString () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformatted Body Ġ= ĠURL Encoder . encode ( params . post Params . toString (), Ġparams . charset . name ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontent Length Ġ= Ġformatted Body . toByteArray ( params . charset ). size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo ( writer : ĠWriter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwriter . write ( formatted Body ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġcreate KeyValue And Array String ( params : ĠAny ?, Ġcharset : ĠCharset , Ġencode key values : ĠBoolean Ġ= Ġtrue ): ĠString Ġ{ ĊĠĠĠ Ġwhen Ġ( params ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġreturn ĠURL Encoder . encode ( params , Ġcharset . name ()) ĊĠĠĠĠĠĠĠ Ġis ĠJSONObject Ġ-> Ġreturn Ġcreate Params From JSONObject ( params , Ġcharset , Ġencode key values ) ĊĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġreturn Ġcreate Params From Map ( params Ġas ĠMap < Any , ĠAny >, Ġcharset , Ġencode key values ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġ( Invalid Parameter Exception ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġcreate Params From JSONObject ( params : ĠJSONObject , Ġcharset : ĠCharset , Ġencode key values : ĠBoolean , Ġs of ar : ĠString Ġ= Ġ"") Ġ: ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĊĠĠĠ Ġfor Ġ( key Ġin Ġparams . keys ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġparam Ġ= Ġparams [ key ] ĊĠĠĠĠĠĠĠ Ġresult Ġ+= Ġcreate Param Value From ( param , Ġcharset , Ġencode key values , Ġs of ar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddition From Key ( key Ġas ĠString , Ġcharset , Ġencode key values , Ġ"" Ġ== Ġs of ar )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ private Ġfun Ġcreate Params From JSONArray ( params : ĠJSONArray , Ġcharset : ĠCharset , Ġencode key values : ĠBoolean , Ġs of ar : ĠString Ġ= Ġ"") Ġ: ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. params . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġparam Ġ= Ġparams [ i ] ĊĠĠĠĠĠĠĠ Ġresult Ġ+= Ġcreate Param Value From ( param , Ġcharset , Ġencode key values , Ġs of ar , Ġ" [] ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ private Ġfun Ġcreate Params From Map ( params : ĠMap < Any , ĠAny >, Ġcharset : ĠCharset , Ġencode key values : ĠBoolean , Ġs of ar : ĠString Ġ= Ġ"") Ġ: ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĊĠĠĠ Ġfor Ġ( key Ġin Ġparams . keys ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġparam Ġ= Ġparams [ key ] ĊĠĠĠĠĠĠĠ Ġresult Ġ+= Ġcreate Param Value From ( param , Ġcharset , Ġencode key values , Ġs of ar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddition From Key ( key , Ġcharset , Ġencode key values , Ġ"" Ġ== Ġs of ar )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ private Ġfun Ġcreate Params From List ( params : ĠList < Any >, Ġcharset : ĠCharset , Ġencode key values : ĠBoolean , Ġs of ar : ĠString Ġ= Ġ"") Ġ: ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. params . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġparam Ġ= Ġparams [ i ] ĊĠĠĠĠĠĠĠ Ġresult Ġ+= Ġcreate Param Value From ( param , Ġcharset , Ġencode key values , Ġs of ar , Ġ" [] ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ private Ġfun Ġaddition From Key ( key : ĠAny , Ġcharset : ĠCharset , Ġencode key : ĠBoolean , Ġfirst : ĠBoolean ) Ġ: ĠString Ġ{ ĊĠĠĠ Ġvar Ġaddition From Key Ġ= Ġkey . toString () ĊĠĠĠ Ġif Ġ( encode key ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaddition From Key Ġ= ĠURL Encoder . encode ( addition From Key , Ġcharset . name ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ(! first ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaddition From Key Ġ= Ġ" [$ addition From Key ]" ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġaddition From Key Ċ } Ċ Ċ private Ġfun Ġcreate Param Value From ( param : ĠAny ?, Ġcharset : ĠCharset , Ġencode key values : ĠBoolean , Ġs of ar : ĠString , Ġaddition : ĠString ) Ġ: ĠString Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġparam Ġis ĠJSONObject Ġ-> Ġcreate Params From JSONObject ( param , Ġcharset , Ġencode key values , Ġs of ar Ġ+ Ġaddition ) ĊĠĠĠĠĠĠĠ Ġparam Ġis ĠJSONArray Ġ-> Ġcreate Params From JSONArray ( param , Ġcharset , Ġencode key values , Ġs of ar Ġ+ Ġaddition ) ĊĠĠĠĠĠĠĠ Ġparam Ġis ĠMap < *, *> Ġ-> Ġcreate Params From Map ( param Ġas ĠMap < Any , ĠAny >, Ġcharset , Ġencode key values , Ġs of ar Ġ+ Ġaddition ) ĊĠĠĠĠĠĠĠ Ġparam Ġis ĠList < *> Ġ-> Ġcreate Params From List ( param Ġas ĠList < Any >, Ġcharset , Ġencode key values , Ġs of ar Ġ+ Ġaddition ) ĊĠĠĠĠĠĠĠ Ġencode key values Ġ-> Ġs of ar Ġ+ Ġaddition Ġ+ Ġ"=" Ġ+ ĠURL Encoder . encode ( param . toString (), Ġcharset . name ()) Ġ+ Ġ"& " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġs of ar Ġ+ Ġaddition Ġ+ Ġ"=" Ġ+ Ġparam . toString () Ġ+ Ġ"& " ĊĠĠĠ Ġ} Ċ } Ċ