/* Ċ Ġ* Ġ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 . fre emark er Ċ Ċ import Ġfre emark er . template .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . http . content .* Ċ import Ġio . ktor . server . application .* Ċ import Ġjava . io .* Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġcontent Ġhandled Ġby Ġ[ Free Marker ] Ġplugin . Ċ Ġ* Ċ Ġ* Ġ@ param Ġtemplate Ġname Ġthat Ġis Ġresolved Ġby Ġfre emark er Ċ Ġ* Ġ@ param Ġmodel Ġto Ġbe Ġpassed Ġduring Ġtemplate Ġrendering Ċ Ġ* Ġ@ param Ġet ag Ġvalue Ġfor Ġ` E - Tag ` Ġheader Ġ( optional ) Ċ Ġ* Ġ@ param ĠcontentType Ġof Ġresponse Ġ( optional , Ġ` text / html ` Ġwith ĠUTF - 8 Ġcharacter Ġencoding Ġby Ġdefault ) Ċ Ġ*/ Ċ public Ġclass ĠFree Marker Content ( ĊĠĠĠ Ġpublic Ġval Ġtemplate : ĠString , ĊĠĠĠ Ġpublic Ġval Ġmodel : ĠAny ?, ĊĠĠĠ Ġpublic Ġval Ġet ag : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġpublic Ġval ĠcontentType : ĠContentType Ġ= ĠContentType . Text . Html . with Charset ( Charsets . UTF _ 8 ) Ċ ) Ċ Ċ /** Ċ Ġ* ĠA Ġplugin Ġthat Ġallows Ġyou Ġto Ġuse ĠFree Marker Ġtemplates Ġas Ġviews Ġwithin Ġyour Ġapplication . Ċ Ġ* ĠProvides Ġthe Ġability Ġto Ġrespond Ġwith Ġ[ Free Marker Content ] Ċ Ġ*/ Ċ public Ġval ĠFree Marker : ĠApplication Plugin < Application , ĠConfiguration , ĠPlugin Instance > Ġ= Ġcreate Application Plugin ( ĊĠĠĠ Ġ" Free Marker ", ĊĠĠĠ Ġ{ ĠConfiguration ( Configuration . DEFAULT _ IN COMPAT IBLE _ IMP RO VE MENTS ) Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġprocess ( content : ĠFree Marker Content ): ĠOut going Content Ġ= Ġwith ( content ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠ Ġplugin Config . get Template ( content . template ). process ( model , Ġwriter ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠText Content ( text Ġ= Ġwriter . toString (), ĠcontentType ) ĊĠĠĠĠĠĠĠ Ġif Ġ( etag Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . versions Ġ+= ĠEntity Tag Version ( etag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġon Call Respond Ġ{ Ġ_, Ġmessage Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( message Ġis ĠFree Marker Content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Body Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ