/* ĊĊĠĠ ĠCopyright Ġ 2 0 1 5 ĠAnd reas ĠW Ã¼ rl ĊĊĠĠ Ġ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 Ġorg . bl itz ort ung . android . jsonrpc Ċ Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġjava . net . URL Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠJson Rpc Client Ġ@ Inject Ġconstructor ( client : ĠHttp ServiceClient Default ) Ġ: ĠHttp ServiceClient Ġby Ġclient Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġconnection Timeout Ġ= Ġ 4 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġsocket Timeout Ġ= Ġ 4 0 0 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġid Ġ= Ġ 0 ĊĊĠĠĠ Ġvar Ġlast NumberOf Transfer red Bytes : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ// ĠVis ible ForTesting ĊĠĠĠ Ġprotected Ġfun Ġbuild Parameters ( parameters : ĠArray < out ĠAny >): ĠJSONArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameter Array Ġ= ĠJSONArray () ĊĠĠĠĠĠĠĠ Ġparameters . forEach Ġ{ Ġparameter Array . put ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġparameter Array ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠVis ible ForTesting ĊĠĠĠ Ġprotected Ġfun Ġbuild Request ( methodName : ĠString , Ġparameters : ĠArray < out ĠAny >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Object Ġ= ĠJSONObject () ĊĊĠĠĠĠĠĠĠ Ġrequest Object . put (" id ", Ġid ) ĊĠĠĠĠĠĠĠ Ġrequest Object . put (" method ", ĠmethodName ) ĊĠĠĠĠĠĠĠ Ġrequest Object . put (" params ", Ġbuild Parameters ( parameters )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrequest Object . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcall ( baseUrl : ĠURL , ĠmethodName : ĠString , Ġvar arg Ġparameters : ĠAny ): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġdo Request ( baseUrl , Ġbuild Request ( methodName , Ġparameters )) ĊĊĠĠĠĠĠĠĠ Ġlast NumberOf Transfer red Bytes Ġ= Ġresponse . length ĊĊĠĠĠĠĠĠĠ Ġif Ġ( response . startsWith (" [" )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJSONArray ( response ). getJSONObject ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Object Ġ= ĠJSONObject ( response ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Object . has (" fault ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJson Rpc Exception (" remote ĠException Ġ'% s ' Ġ#% s Ġ". format ( response Object . get (" fault String "), Ġresponse Object . get (" fault Code "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse Object ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ