package ĠSky flow . core Ċ Ċ import ĠSky flow .* Ċ import Ġandroid . util . Base 6 4 Ċ import ĠSky flow . collect . client . Collect APIC allback Ċ import ĠSky flow . reveal . Get ById Record Ċ import ĠSky flow . reveal . Re veal Api Callback Ċ import ĠSky flow . reveal . Re veal ById Callback Ċ import ĠSky flow . reveal . Re veal Request Record Ċ import ĠSky flow . soap . Soap Api Callback Ċ import ĠSky flow . soap . Soap Connection Config Ċ import ĠSky flow . soap . Soap Value Callback Ċ import ĠSky flow . utils . Utils Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . Unsupported EncodingException Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . util .* ĊĊ Ċ object ĠJWT Utils Ġ{ ĊĠĠĠ Ġ@ Throws ( java . lang . Exception :: class ) ĊĠĠĠ Ġfun Ġdecoded ( JWT Encoded : ĠString ): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsplit Ġ= ĠJWT Encoded . split (". "). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJSONObject ( get Json ( split [ 1 ])) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnsupported EncodingException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( e . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJSONObject () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġis Expired ( JWT Encoded : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpire Time Ġ= Ġdecoded ( JWT Encoded ). getString (" exp ") ĊĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= Ġ(( cal . time In Millis Ġ/ Ġ 1 0 0 0 ) Ġ- Ġ 3 0 0 ). toString () ĊĠĠĠĠĠĠĠ Ġreturn ĠcurrentTime Ġ> Ġexpire Time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Unsupported EncodingException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġget Json ( str Encoded : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecoded Bytes : ĠByteArray Ġ= ĠBase 6 4 . decode ( str Encoded , ĠBase 6 4 . URL _ SAFE ) ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( decoded Bytes , ĠCharset . forName (" UTF - 8 ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠAP IC lient Ġ( ĊĠĠĠ Ġval Ġvault Id : ĠString , ĊĠĠĠ Ġval Ġvault URL : ĠString , ĊĠĠĠ Ġprivate Ġval Ġtoken Provider : ĠToken Provider , ĊĠĠĠ Ġval Ġlog Level : ĠLogLevel , ĊĠĠĠ Ġprivate Ġvar Ġtoken : ĠString Ġ= Ġ"" Ċ ){ ĊĠĠĠ Ġprivate Ġval Ġtag Ġ= ĠAP IC lient :: class . qualified Name ĊĠĠĠ Ġprivate Ġfun ĠisValid Token ( token : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( token Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! JWT Utils . is Expired ( token !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget AccessToken ( callback : ĠCallback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isValid Token ( token )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . info ( tag , ĠMessages . RE TR IE V ING _ BE AR ER _ TOKEN . getMessage (), Ġlog Level ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Provider . get Bearer Token ( object Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( response Body : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . info ( tag , ĠMessages . BE AR ER _ TOKEN _ RECE IVED . getMessage (), Ġlog Level ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! isValid Token ( response Body . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠSky flow Error ( Sky flow ErrorCode . INVALID _ BE AR ER _ TOKEN , tag , logLevel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Failure ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġ" Bearer Ġ$ response Body " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Success ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( exception : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . error ( tag , ĠMessages . RE TR IE V ING _ BE AR ER _ TOKEN _ FAILED . getMessage (), Ġlog Level ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠSky flow Error ( Sky flow ErrorCode . INVALID _ BE AR ER _ TOKEN , tag , logLevel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Failure ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Success ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠSky flow Error ( Sky flow ErrorCode . INVALID _ BE AR ER _ TOKEN , tag , logLevel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Failure ( error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost ( records : ĠJSONObject , Ġcallback : ĠCallback , Ġoptions : ĠInsert Options ){ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal Records Ġ= ĠUtils . construct Batch RequestBody ( records , Ġoptions , logLevel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollect Api Callback Ġ= ĠCollect APIC allback ( this , Ġrecords , Ġcallback , Ġoptions , logLevel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . get AccessToken ( collect Api Callback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : Exception ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Failure ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠ Ġfun Ġget ( records : JSONObject , Ġcallback Ġ: ĠCallback ){ ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġconstruct Body For Det o ken ize ( records ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreveal Api Callback Ġ= ĠRe veal Api Callback ( callback , Ġthis , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . get AccessToken ( reveal Api Callback ) ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Failure ( Utils . construct Error ( e )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ById ( records : ĠMutable List < Get ById Record >, Ġcallback : ĠCallback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreveal Api Callback Ġ= ĠRe veal ById Callback ( callback , Ġthis , Ġrecords ) ĊĠĠĠĠĠĠĠ Ġthis . get AccessToken ( reveal Api Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinvoke Connection ( connection Config : ĠConnection Config , Ġcallback : ĠCallback , Ġclient : ĠClient ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠConnection Api Callback ( connection Config , callback , Ġlog Level , client ) ĊĠĠĠĠĠĠĠ Ġthis . get AccessToken ( connection ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinvoke Soap Connection ( soap Connection Config : ĠSo ap Connection Config , Ġclient : ĠClient , Ġcallback : ĠCallback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġso ap Value Callback Ġ= ĠSo ap Value Callback ( client , soap Connection Config , callback , logLevel ) ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠSo ap Api Callback ( soap Connection Config , soap Value Callback , Ġlog Level , client ) ĊĠĠĠĠĠĠĠ Ġthis . get AccessToken ( connection ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconstruct Body For Det o ken ize ( records : ĠJSONObject ): ĠMutable List < Re veal Request Record > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! records . has (" records ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSky flow Error ( Sky flow ErrorCode . RECORD S _ KEY _ NOT _ FOUND , tag , logLevel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( records . get (" records "). toString (). isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSky flow Error ( Sky flow ErrorCode . EMPTY _ RECORD S , tag , logLevel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( records . get (" records ") Ġ! is ĠJSONArray ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSky flow Error ( Sky flow ErrorCode . INVALID _ RECORD S , tag , logLevel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif (! records . has (" records ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSky flow Error ( Sky flow ErrorCode . RECORD S _ KEY _ NOT _ FOUND , tag , logLevel ) ĊĠĠĠĠĠĠĠ Ġelse Ġif ( records . get (" records ") Ġ! is ĠJSONArray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSky flow Error ( Sky flow ErrorCode . INVALID _ RECORD S , tag , logLevel ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= Ġrecords . get JSONArray (" records ") ĊĠĠĠĠĠĠĠ Ġif ( json Array . length () Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSky flow Error ( Sky flow ErrorCode . EMPTY _ RECORD S , tag , logLevel ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Re veal Request Record >() ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġjson Array . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson obj 1 Ġ= Ġjson Array . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! json obj 1 . has (" token ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSky flow Error ( Sky flow ErrorCode . MISSING _ TOKEN , tag , logLevel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( json obj 1 . get (" token "). toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSky flow Error ( Sky flow ErrorCode . EMPTY _ TOKEN _ ID , tag , logLevel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Re veal Request Record ( json obj 1 . get (" token "). toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} Ċ }