/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 - 2 0 2 1 ĠJetBrains Ġs . r . o Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġio . ktor . server . application . plugins . api Ċ Ċ import Ġio . ktor . server . application .* Ċ Ċ /** Ċ Ġ* ĠDesc end ents Ġof Ġ[ On Call ] Ġallow Ġyou Ġto Ġextend Ġhandling Ġof Ġan Ġapplication Ġcall . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ġ``` Ċ Ġ* Ġon Call Ġ{ Ġcall Ġ-> Ċ Ġ* ĠĠĠĠĠ Ġprintln ( call . request . uri ) Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠThis Ġwill Ġprint Ġyou Ġa ĠURL Ġfor Ġeach Ġcall Ġto Ġyour Ġapplication . Ċ Ġ**/ Ċ public Ġinterface ĠOn Call Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefines Ġhow Ġprocessing Ġan ĠHTTP Ġcall Ġneeds Ġto Ġbe Ġmodified Ġby Ġthe Ġcurrent Ġ[ Plugin Builder ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġblock ĠAn Ġaction Ġthat Ġneeds Ġto Ġbe Ġexecuted Ġwhen Ġyour Ġapplication Ġreceives Ġan ĠHTTP Ġcall . ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġpublic Ġoperator Ġfun Ġinvoke ( block : Ġsuspend ĠCall Context .( call : ĠApplication Call ) Ġ-> ĠUnit ): ĠUnit Ċ } Ċ Ċ /** Ċ Ġ* ĠDesc end ents Ġof Ġ[ On Call Receive ] Ġallow Ġyou Ġto Ġextend Ġthe Ġprocess Ġof Ġreceiving Ġdata Ġfrom Ġa Ġclient . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ġ``` Ċ Ġ* Ġon Call Receive Ġ{ Ġcall Ġ-> Ċ Ġ* ĠĠĠĠĠ Ġprintln ( call . request . uri ) Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠThis Ġwill Ġprint Ġyou Ġa ĠURL Ġonce Ġyou Ġexecute Ġcall . receive () Ġin Ġyour Ġserver . Ċ Ġ**/ Ċ public Ġinterface ĠOn Call Receive Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefines Ġhow Ġcurrent Ġ[ Plugin Builder ] Ġneeds Ġto Ġtransform Ġdata Ġreceived Ġfrom Ġa Ġclient . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġblock ĠAn Ġaction Ġthat Ġneeds Ġto Ġbe Ġexecuted Ġwhen Ġyour Ġapplication Ġreceives Ġdata Ġfrom Ġa Ġclient . ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġpublic Ġoperator Ġfun Ġinvoke ( block : Ġsuspend ĠCall Receive Context .( call : ĠApplication Call ) Ġ-> ĠUnit ): ĠUnit Ċ } Ċ Ċ /** Ċ Ġ* ĠDesc end ents Ġof Ġ[ On Call Receive ] Ġallow Ġyou Ġto Ġextend Ġthe Ġprocess Ġof Ġsending Ġa Ġresponse Ġto Ġthe Ġclient . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* Ċ Ġ* Ġ``` Ċ Ġ* Ġon Call Respond Ġ{ Ġcall Ġ-> Ċ Ġ* ĠĠĠĠĠ Ġprintln ( call . request . uri ) Ċ Ġ* Ġ} Ċ Ġ* Ċ Ġ* Ġon Call Respond . after Transform Ġ{ Ġcall , Ġcontent Ġ-> Ċ Ġ* ĠĠĠĠĠ Ġprintln (" sending Ġ$ content Ġto Ġa Ġclient ") Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠThis Ġprints Ġa ĠURL Ġonce Ġyou Ġexecute Ġcall . respond () Ġon Ġyour Ġserver Ċ Ġ* Ġand Ġalso Ġprints Ġraw Ġcontent Ġthat Ġis Ġgoing Ġto Ġbe Ġsent Ġto Ġthe Ġclient . Ċ Ġ**/ Ċ public Ġinterface ĠOn Call Respond Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġhow Ġto Ġtransform Ġthe Ġdata . ĠFor Ġexample , Ġyou Ġcan Ġwrite Ġa Ġcustom Ġserializer Ġusing Ġthis Ġmethod . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġblock ĠAn Ġaction Ġthat Ġneeds Ġto Ġbe Ġexecuted Ġwhen Ġyour Ġserver Ġis Ġsending Ġa Ġresponse Ġto Ġa Ġclient . ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġpublic Ġoperator Ġfun Ġinvoke ( block : Ġsuspend ĠCall Respond Context .( call : ĠApplication Call ) Ġ-> ĠUnit ): ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllows Ġyou Ġto Ġexecute Ġyour Ġcode Ġafter Ġresponse Ġtransformation Ġhas Ġbeen Ġmade . ĊĠĠĠĠ Ġ* Ġ@ see ĠStatus Pages ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġblock ĠAn Ġaction Ġthat Ġneeds Ġto Ġbe Ġexecuted Ġafter Ġtransformation Ġof Ġthe Ġresponse Ġbody . ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġpublic Ġfun Ġafter Transform ( ĊĠĠĠĠĠĠĠ Ġblock : Ġsuspend ĠCall Respond After Transform Context .( call : ĠApplication Call , Ġresponse Body : ĠAny ) Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠUnit Ċ } Ċ