/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 6 . ĠSun gh you k ĠB ae Ġ< sun gh you k . bae @ gmail . com > Ċ Ġ* Ġ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 Ġdeb op 4 k . http Ċ Ċ import Ġdeb op 4 k . core . collections . par Map Ċ import Ġdeb op 4 k . core . logger Of Ċ import Ġnl . k omp onent s . kov enant . Promise Ċ import Ġnl . k omp onent s . kov enant . task Ċ import Ġorg . apache . http . HttpResponse Ċ import Ġorg . apache . http . client . config . Request Config Ċ import Ġorg . apache . http . client . methods . Http Uri Request Ċ import Ġorg . apache . http . concurrent . Future Callback Ċ import Ġorg . apache . http . impl . nio . client . Closeable Http Async Client Ċ import Ġorg . apache . http . impl . nio . client . Http Async Clients Ċ import Ġjava . util . concurrent .* Ċ Ċ /** Ċ Ġ* Ġë¹Ħ ëıĻ ê¸° ĠHttp ĠClient Ċ Ġ* Ċ Ġ* Ġ@ author Ġdeb op Ġsun gh you k . bae @ gmail . com Ċ Ġ*/ Ċ open Ġclass ĠAsync HttpClient Ġ{ ĊĊĠ Ġprivate Ġval Ġlog Ġ= Ġlogger Of ( java Class ) ĊĊĠ Ġval Ġrequest Config : ĠRequest Config Ġby Ġlazy Ġ{ ĊĠĠĠ ĠRequest Config . custom () ĊĠĠĠĠĠĠĠ Ġ. set Socket Timeout ( DEFAULT _ SOCKET _ TIMEOUT ) ĊĠĠĠĠĠĠĠ Ġ. set Connect Timeout ( DEFAULT _ CONNECT _ TIMEOUT ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠ Ġ} ĊĊĠ Ġ@ Jvm Over loads ĊĠ Ġfun Ġexecute ( request : ĠHttp Uri Request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback : ĠFuture Callback < HttpResponse >? Ġ= Ġnull ): ĠPromise < HttpResponse ?, ĠException > Ġ{ ĊĊĠĠĠ Ġval Ġclient Ġ= Ġnew Async HttpClient () ĊĠĠĠ Ġclient . start () ĊĊĠĠĠ Ġval Ġpromise Ġ= Ġtask Ġ{ ĊĠĠĠĠĠ Ġval Ġjava future Ġ= Ġclient . execute ( request , Ġcallback ) ĊĠĠĠĠĠ Ġjava future . get ( DEFAULT _ CONNECT _ TIMEOUT . to Long (), ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpromise . always Ġ{ ĊĠĠĠĠĠ Ġclient . close () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġpromise ĊĠ Ġ} ĊĊĠ Ġfun Ġexecute As Parallel ( requests : ĠIterable < Http Uri Request >): ĠList < Promise < HttpResponse ?, ĠException >> Ġ{ ĊĠĠĠ Ġreturn Ġrequests . par Map Ġ{ Ġrequest Ġ-> Ġexecute ( request ) Ġ}. toList () ĊĠ Ġ} ĊĊĠ Ġopen Ġprotected Ġfun Ġnew Async HttpClient (): ĠClose able Http Async Client Ġ{ ĊĠĠĠ Ġreturn ĠHttp Async Clients . custom () ĊĠĠĠĠĠĠĠ Ġ. setDefault Request Config ( request Config ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval ĠDEFAULT _ CONNECT _ TIMEOUT Ġ= Ġ 9 0 ĊĠĠĠ Ġconst Ġval ĠDEFAULT _ SOCKET _ TIMEOUT Ġ= Ġ 3 0 0 0 0 ĊĠ Ġ} Ċ }