package Ġcom . b ren tp an ther . bitcoin widget Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . JsonArray Ċ import Ġcom . google . gson . JsonObject Ċ import Ġokhttp 3 .* Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ internal Ġobject ĠExchange Helper Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠSPEC Ġ= ĠConnection Spec . Builder ( Connection Spec . MO DER N _ TLS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. tls Versions ( Tls Version . TLS _ 1 _ 0 , ĠT ls Version . TLS _ 1 _ 1 , ĠT ls Version . TLS _ 1 _ 2 , ĠT ls Version . TLS _ 1 _ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cipher Su ites ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ ECD SA _ WITH _ AES _ 1 2 8 _ GCM _ SHA 2 5 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ RSA _ WITH _ AES _ 1 2 8 _ GCM _ SHA 2 5 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ D HE _ RSA _ WITH _ AES _ 1 2 8 _ GCM _ SHA 2 5 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ ECD SA _ WITH _ AES _ 2 5 6 _ CBC _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ ECD SA _ WITH _ AES _ 1 2 8 _ CBC _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ RSA _ WITH _ AES _ 1 2 8 _ CBC _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ RSA _ WITH _ AES _ 2 5 6 _ CBC _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ ECD SA _ WITH _ RC 4 _ 1 2 8 _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ ECD HE _ RSA _ WITH _ RC 4 _ 1 2 8 _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ D HE _ RSA _ WITH _ AES _ 1 2 8 _ CBC _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ D HE _ D SS _ WITH _ AES _ 1 2 8 _ CBC _ SHA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCipher Suite . TLS _ D HE _ RSA _ WITH _ AES _ 2 5 6 _ CBC _ SHA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġget From Bitcoin Charts ( symbol : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġget JsonArray (" https :// api . bitcoin charts . com / v 1 / mark ets . json ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( obj Ġin Ġarray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġobj . as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( symbol Ġ!= Ġo . get (" symbol "). asString ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġo . get (" avg "). asString ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġget JsonObject ( url : ĠString , Ġheaders : ĠHeaders ? Ġ= Ġnull ): ĠJsonObject Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson (). fromJson ( getString ( url , Ġheaders ), ĠJsonObject :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġget JsonArray ( url : ĠString ): ĠJson Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson (). fromJson ( getString ( url ), ĠJson Array :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun ĠgetString ( url : ĠString , Ġheaders : ĠHeaders ? Ġ= Ġnull ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. follow Redirect s ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. follow Ssl Redirect s ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 8 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connection Specs ( Arrays . asList ( SPEC , ĠConnection Spec . CLE ART EXT )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hostname Verifier Ġ{ Ġ_, Ġ_ Ġ-> Ġtrue Ġ}. build () ĊĠĠĠĠĠĠĠ Ġvar Ġbuilder : ĠRequest . Builder Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( url ) ĊĠĠĠĠĠĠĠ Ġif Ġ( headers Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder Ġ= Ġbuilder . headers ( headers ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġbuilder . build () ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . new Call ( request ). execute () ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . body () !!. string () ĊĠĠĠ Ġ} Ċ Ċ } Ċ