package Ġcom . just ai . ja ic f . channel . http Ċ Ċ import Ġio . ktor . application . Application Call Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . http . ContentType Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . request . receive Stream Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . response . respond Text Ċ import Ġio . ktor . routing . Routing Ċ import Ġio . ktor . routing . post Ċ import Ġjava . nio . charset . Charset Ċ Ċ /** Ċ Ġ* ĠA Ġhelper Ġextension Ġfor ĠK tor Ġframework . Ċ Ġ* ĠRoutes Ġevery ĠPOST Ġrequest Ġfrom Ġthe Ġspecified Ġcontext Ġto Ġthe Ġrelated Ġ[ Http Bot Channel ] Ġimplementation . Ċ Ġ* Ċ Ġ* ĠUsage Ġexample : Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* Ġembedded Server ( Net ty , Ġ 8 0 0 0 ) Ġ{ Ċ Ġ* ĠĠ Ġrouting Ġ{ Ċ Ġ* ĠĠĠĠ Ġhttp Bot Routing ( Ċ Ġ* ĠĠĠĠĠĠ Ġ"/ ale xa " Ġto Ġa lex a Channel , Ċ Ġ* ĠĠĠĠĠĠ Ġ"/ facebook " Ġto Ġfacebook Channel Ċ Ġ* ĠĠĠĠ Ġ) Ċ Ġ* ĠĠ Ġ} Ċ Ġ* Ġ}. start ( wait Ġ= Ġtrue ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun ĠRouting . http Bot Routing ( var arg Ġchannels : ĠPair < String , ĠHttp Bot Channel >) Ġ{ ĊĠĠĠ Ġchannels . forEach Ġ{ Ġchannel Ġ-> ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= ĠContentType . parse ( channel . second . contentType ) ĊĊĠĠĠĠĠĠĠ Ġpost ( channel . first ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġcall . receive Text ( Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġchannel . second . process ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Ġ== Ġnull Ġ-> Ġcall . respond ( HttpStatusCode . NotFound , Ġ" Bot Ġdidn 't Ġrespond ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . isNotEmpty () Ġ-> Ġcall . respond Text ( output , ĠcontentType ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcall . respond ( HttpStatusCode . OK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġsuspend Ġfun ĠApplication Call . receive Text ( charset : ĠCharset ) ĊĠĠĠĠĠĠĠ Ġ= Ġreceive Stream (). buffered Reader ( charset ). read Text ()