package Ġorg . ped ro fel ix . examples Ċ Ċ import Ġkotlinx . coroutines . experimental . future . future Ċ import Ġorg . apache . http . HttpResponse Ċ import Ġorg . apache . http . client . methods . HttpGet Ċ import Ġorg . apache . http . concurrent . Future Callback Ċ import Ġorg . apache . http . impl . nio . client . Closeable Http Async Client Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġjava . lang . Exception Ċ import Ġjava . util . concurrent . Cancellation Exception Ċ import Ġkotlin . coroutines . experimental . suspend Coroutine ĊĊ Ċ @ RestController Ċ @ RequestMapping ("/ example ") Ċ class ĠExample Controller ( val Ġclient Ġ: ĠClose able Http Async Client ) Ġ{ ĊĊĠĠĠ Ġ@ GetMapping ("") ĊĠĠĠ Ġfun Ġget () Ġ= Ġfuture Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġget Ġ= ĠHttp Get (" https :// api . github . com / users / pm hs fel ix ") ĊĠĠĠĠĠĠĠ Ġsuspend Coroutine < String > Ġ{ cont Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . execute ( get , Ġobject : ĠFuture Callback < HttpResponse > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompleted ( result : ĠHttpResponse ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcont . resume ( result !!. entity . content . buffered Reader (). use Ġ{ Ġit . read Text () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfailed ( ex : ĠException ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcont . resume With Exception ( ex !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcancelled () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcont . resume With Exception ( Cancellation Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }