package Ġhello Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġio . vertx . core . AsyncResult Ċ import Ġio . vertx . core . Handler Ċ import Ġio . vertx . core . Multi Map Ċ import Ġio . vertx . core . buffer . Buffer Ċ import Ġio . vertx . core . json . Json Ċ import Ġio . vertx . ext . web . Router Ċ import Ġio . vertx . ext . web . handler . Static Handler Ċ import Ġio . vertx . ext . web . temp l . Free Marker Template Engine Ċ import Ġjava . net . URL Decoder Ċ import Ġio . vertx . groovy . ext . web . Routing Context _ Gro ovy Extension . getBody As Json Ċ import Ġio . vertx . core . json . JsonObject Ċ import Ġio . vertx . ext . web . client . HttpResponse Ċ import Ġio . vertx . ext . web . client . Web Client Ċ import Ġio . vertx . ext . web . client . Web Client Options Ċ import Ġio . vertx . ext . web . handler . Body Handler Ċ import Ġio . vertx . kotlin . ext . web . client . Web Client Options ĊĊ Ċ class ĠServer Ġ: Ġio . vertx . core . Abstract Vert icle () Ġ Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġrouter Ġ= ĠRouter . router ( vertx ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġbody Ġhandler Ġwill Ġbe Ġcalled Ġfor Ġall Ġroutes ĊĠĠĠĠĠĠĠ Ġrouter . route (). handler ( Body Handler . create ()) ĊĊĠĠĠĠĠĠĠ Ġ// handles Ġstatic Ġfiles Ġin Ġstatic Ġfolder ĊĠĠĠĠĠĠĠ Ġrouter . route ("/ static /* "). handler ( Static Handler . create (). set Web Root (" static "). set Caching Enabled ( false ). set Cache Entry Timeout ( 1 0 0 0 ). setMax Age Seconds ( 1 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIn Ġorder Ġto Ġuse Ġa Ġtemplate Ġwe Ġfirst Ġneed Ġto Ġcreate Ġan Ġengine ĊĠĠĠĠĠĠĠ Ġvar Ġengine Ġ= ĠFree Marker Template Engine . create () ĊĊĠĠĠĠĠĠĠ Ġ// ĠEntry Ġpoint Ġto Ġthe Ġapplication , Ġthis Ġwill Ġrender Ġa Ġcustom Ġtemplate . ĊĠĠĠĠĠĠĠ Ġrouter . get (). handler ({ Ġctx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġdefine Ġa Ġhardcoded Ġtitle Ġfor Ġour Ġapplication ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . put (" name ", Ġ" TRY ĠK OT LIN ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġnow Ġdelegate Ġto Ġthe Ġengine Ġto Ġrender Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġengine . render ( ctx , Ġ" templates / index . ft l ", Ġ{ Ġres Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( res . succeeded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . response (). end ( res . result ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . fail ( res . cause ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġrouter . post (). handler ({ Ġrouting Context Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġrouting Context . request (). getParam (" code ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġrouting Context . request (). getParam (" input ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcode Instance Ġ= ĠCode ( code , Ġinput ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġjson Ġ= Ġgson . toJson ( code Instance ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġoptions Ġ= ĠWeb Client Options ( userAgent Ġ= Ġ" P andas / 6 . 6 . 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġclient Ġ= ĠWeb Client . create ( vertx , Ġoptions ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . post ( 8 0 0 0 , Ġ" localhost ", Ġ"/ "). send Json ( code Instance , Ġ{ Ġar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ar . succeeded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresponse Ġ= Ġar . result () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* var Ġcompilation Result Ġ= ĠJson . decode Value ( Buffer . buffer ( answer ), ĠCompilation Result :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( compilation Result . output ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( compilation Result . error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġcompilation Result . warnings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanswer Ġ= Ġresponse . body AsString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( answer ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrouting Context . response (). put Header (" content - type ", Ġ" application / json "). end ( answer ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// code Instance Ġ= Ġgson . fromJson ( json , Ġhello . Code :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĊĠĠĠĠĠĠĠ Ġvert x . create HttpServer (). request Handler ({ Ġrouter . accept ( it ) Ġ}). listen ( 8 0 8 0 ) ĊĠĠĠ Ġ} Ċ }