/* Ċ Ġ* Ġ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 . velocity Ċ Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . http . content .* Ċ import Ġio . ktor . server . application .* Ċ import Ġorg . apache . velocity .* Ċ import Ġorg . apache . velocity . app .* Ċ import Ġorg . apache . velocity . context .* Ċ import Ġjava . io .* Ċ Ċ /** Ċ Ġ* ĠA Ġresponse Ġcontent Ġhandled Ġby Ġthe Ġ[ io . ktor . server . velocity . Velocity ] Ġplugin . Ċ Ġ* Ċ Ġ* Ġ@ param Ġtemplate Ġname Ġto Ġbe Ġresolved Ġby ĠVe locity Ċ Ġ* Ġ@ param Ġmodel Ġto Ġbe Ġpassed Ġduring Ġtemplate Ġrendering Ċ Ġ* Ġ@ param Ġet ag Ġvalue Ġfor Ġthe Ġ` E - Tag ` Ġheader Ġ( optional ) Ċ Ġ* Ġ@ param ĠcontentType Ġof Ġresponse Ġ( optional , Ġ` text / html ` Ġwith Ġthe ĠUTF - 8 Ġcharacter Ġencoding Ġby Ġdefault ) Ċ Ġ*/ Ċ public Ġclass ĠVe locity Content ( ĊĠĠĠ Ġpublic Ġval Ġtemplate : ĠString , ĊĠĠĠ Ġpublic Ġval Ġmodel : ĠMap < String , ĠAny >, ĊĠĠĠ Ġpublic Ġval Ġet ag : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġpublic Ġval ĠcontentType : ĠContentType Ġ= ĠContentType . Text . Html . with Charset ( Charsets . UTF _ 8 ) Ċ ) Ċ Ċ internal Ġfun Ġvelocity Outgoing Content ( ĊĠĠĠ Ġtemplate : ĠTemplate , ĊĠĠĠ Ġmodel : ĠContext , ĊĠĠĠ Ġet ag : ĠString ?, ĊĠĠĠ ĠcontentType : ĠContentType Ċ ): ĠOut going Content Ġ{ ĊĠĠĠ Ġval Ġwriter Ġ= ĠString Writer () ĊĠĠĠ Ġtemplate . merge ( model , Ġwriter ) ĊĊĠĠĠ Ġval Ġresult Ġ= ĠText Content ( text Ġ= Ġwriter . toString (), ĠcontentType ) ĊĠĠĠ Ġif Ġ( etag Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult . versions Ġ+= ĠEntity Tag Version ( etag ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġplugin Ġthat Ġallows Ġyou Ġto Ġuse ĠVe locity Ġtemplates Ġas Ġviews Ġwithin Ġyour Ġapplication . Ċ Ġ* ĠProvides Ġthe Ġability Ġto Ġrespond Ġwith Ġ[ Velocity Content ]. Ċ Ġ* ĠYou Ġcan Ġlearn Ġmore Ġfrom Ġ[ Velocity ]( https :// ktor . io / docs / velocity . html ). Ċ Ġ*/ Ċ public Ġval ĠVe locity : ĠApplication Plugin < Velocity Engine > Ġ= Ġcreate Application Plugin (" Velocity ", Ġ:: Velocity Engine ) Ġ{ ĊĊĠĠĠ Ġplugin Config . init () ĊĊĠĠĠ Ġfun Ġprocess ( content : ĠVe locity Content ): ĠOut going Content Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvelocity Outgoing Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Config . get Template ( content . template ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVe locity Context ( content . model ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . etag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . contentType ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġon Call Respond Ġ{ Ġ_, Ġvalue Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġis ĠVe locity Content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Body Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ