package Ġio . un th rott led . the med . components . integrations Ċ Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . util . io . Http Requests Ċ import Ġio . un th rott led . the med . components . integrations . Rest Tools . perform Request Ċ import Ġio . un th rott led . the med . components . util . read All The Bytes Ċ import Ġio . un th rott led . the med . components . util . to Optional Ċ import Ġjava . io . InputStream Ċ import Ġjava . util . Optional Ċ import Ġjava . util . concurrent . Callable Ċ Ċ object ĠRest Client Ġ{ ĊĊĠ Ġfun Ġperform Get ( url : ĠString ): ĠOptional < String > Ġ= ĊĠĠĠ ĠApplication Manager . getApplication (). execute On P ooled Thread ( ĊĠĠĠĠĠ ĠCallable Ġ{ ĊĠĠĠĠĠĠĠ Ġperform Request ( url ) Ġ{ Ġresponse Body Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠString ( response Body . read All The Bytes ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ). get () Ċ } Ċ Ċ object ĠRest Tools Ġ{ ĊĠ Ġprivate Ġval Ġlog Ġ= ĠLogger . getInstance ( this :: class . java ) ĊĊĠ Ġfun Ġ< T > Ġperform Request ( ĊĠĠĠ Ġurl : ĠString , ĊĠĠĠ Ġbody Extractor : Ġ( InputStream ) Ġ-> ĠT ĊĠ Ġ): ĠOptional < T > Ġ{ ĊĠĠĠ Ġlog . info (" At tempting Ġto Ġdownload Ġremote Ġasset : Ġ$ url ") ĊĠĠĠ Ġreturn ĠHttp Requests . request ( url ) ĊĠĠĠĠĠ Ġ. connect Ġ{ Ġrequest Ġ-> ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġbody Extractor ( request . inputStream ) ĊĠĠĠĠĠĠĠĠĠ Ġlog . info (" Asset Ġhas Ġrespon ded Ġfor Ġremote Ġasset : Ġ$ url ") ĊĠĠĠĠĠĠĠĠĠ Ġbody . to Optional () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠHttp Requests . HttpStatus Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlog . warn (" Unable Ġto Ġget Ġremote Ġasset : Ġ$ url Ġfor Ġr ais ins ", Ġe ) ĊĠĠĠĠĠĠĠĠĠ ĠOptional . empty < T >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ