package Ġcom . co box . v ulture Ċ Ċ import Ġcom . co box . util ites . log . Log Ċ import Ġcom . co box . v ulture . bus ni ess . framework . V ulture Http Gateway Ċ import Ġio . vertx . core . AsyncResult Ċ import Ġio . vertx . core . Handler Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . http . HttpServer Ċ import Ġio . vertx . core . http . HttpServer Options Ċ import Ġio . vertx . core . impl . future . Failed Future Ċ import Ġio . vertx . core . impl . future . Succeeded Future Ċ import Ġio . vertx . core . json . JsonObject Ċ import Ġio . vertx . ext . web . Router Ċ import Ġjava . io . File Ċ Ċ class ĠHttp Server Host ( ĊĠĠĠ Ġprivate Ġval Ġvert x : ĠVert x , ĊĠĠĠ Ġprivate Ġval Ġconfig : ĠJsonObject Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġhttp Host Domain : ĠString ? Ġ= ĠV ulture Config . Default . HTTP _ HOST _ DOMAIN ĊĠĠĠ Ġprivate Ġvar Ġhttp Listen Port Ġ= ĠV ulture Config . Default . HTTP _ LIST EN _ PORT ĊĠĠĠ Ġprivate Ġvar Ġhttp Address Re use Ġ= ĠV ulture Config . Default . ADDRESS _ RE USE ĊĠĠĠ Ġprivate Ġvar Ġhttp Port Re use Ġ= ĠV ulture Config . Default . PORT _ RE USE ĊĠĠĠ Ġprivate Ġvar Ġstatic Resource Root Ġ= ĠV ulture Config . Default . STATIC _ RESOURCE _ ROOT ĊĊĠĠĠ Ġprivate Ġvar Ġhttp Server : ĠHttp Server ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġhttp Router Ġ= ĠRouter . router ( vertx ) ĊĠĠĠ Ġprivate Ġval Ġhttp Gate ways Ġ= Ġmutable Map Of < String , ĠV ulture Http Gateway >() ĊĊĠĠĠ Ġfun Ġprepare () Ġ{ ĊĠĠĠĠĠĠĠ Ġhttp Host Domain Ġ= Ġconfig . getString ( V ulture Config . Key . HTTP _ HOST _ DOMAIN , ĠV ulture Config . Default . HTTP _ HOST _ DOMAIN ) ĊĠĠĠĠĠĠĠ Ġhttp Listen Port Ġ= Ġconfig . getInteger ( V ulture Config . Key . HTTP _ LIST EN _ PORT , ĠV ulture Config . Default . HTTP _ LIST EN _ PORT ) ĊĠĠĠĠĠĠĠ Ġhttp Address Re use Ġ= Ġconfig . getBoolean ( V ulture Config . Key . ADDRESS _ RE USE , ĠV ulture Config . Default . ADDRESS _ RE USE ) ĊĠĠĠĠĠĠĠ Ġhttp Port Re use Ġ= Ġconfig . getBoolean ( V ulture Config . Key . PORT _ RE USE , ĠV ulture Config . Default . PORT _ RE USE ) ĊĠĠĠĠĠĠĠ Ġstatic Resource Root Ġ= Ġconfig . getString ( V ulture Config . Key . STATIC _ RESOURCE _ ROOT , ĠV ulture Config . Default . STATIC _ RESOURCE _ ROOT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlaunch HttpServer ( handler : ĠHandler < AsyncResult < Boolean >> ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhttp Server Ġ= Ġhttp Server Ġ?: Ġlet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . create HttpServer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Server Options (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! http Host Domain . isNull OrEmpty ()) Ġthis . host Ġ= Ġhttp Host Domain ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . port Ġ= Ġhttp Listen Port ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Re use Address Ġ= Ġhttp Address Re use ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Re use Port Ġ= Ġhttp Port Re use ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). let Ġ{ Ġserver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Static Resource Handler ( http Router ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver . request Handler ( http Router ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver . listen Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . succeeded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . info ( TAG , Ġ"[ launch HttpServer ] ĠHttp Ġgateway Ġserver Ġlaunched , Ġlistening Ġat Ġport Ġ${ result . result (). actual Port () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. handle ( Succeeded Future ( true )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . error ( TAG , Ġ"[ launch HttpServer ] ĠHttp Ġgateway Ġserver Ġlaunched Ġfail , Ġcaused Ġby Ġ${ result . cause () }", Ġresult . cause ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. handle ( Failed Future ( result . cause ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshutdown HttpServer ( handler : ĠHandler < AsyncResult < Boolean >> ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhttp Server ?. let Ġ{ Ġserver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Server Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver . close Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . succeeded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . info ( TAG , Ġ"[ shutdown HttpServer ] ĠHttp Ġgateway Ġserver Ġis Ġshutdown ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. handle ( Succeeded Future ( true )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . error ( TAG , Ġ"[ shutdown HttpServer ] ĠSh ut Ġdown Ġhttp Ġgateway Ġserver Ġfail , Ġcaused Ġby Ġ${ result . cause () }", Ġresult . cause ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. handle ( Failed Future ( result . cause ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Sub Gateway ( gateway Name : ĠString , Ġgateway : ĠV ulture Http Gateway ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( http Gate ways . containsKey ( gateway Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . warn ( TAG , Ġ"[ register Sub Router ] ĠSub Ġrouter Ġ'$ gateway Name ' Ġhas Ġalready Ġregistered Ġto Ġgateway , Ġignore ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhttp Router . route (). let Ġ{ Ġnew Route Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgateway . name Ġ= Ġgateway Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgateway . mount ( new Route ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Gate ways [ gateway Name ] Ġ= Ġgateway ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunregister Sub Gateway ( gateway Name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠ Ġreturn Ġhttp Gate ways [ gateway Name ]?. let Ġ{ Ġgateway Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Router . routes . remove ( gateway . route Point ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgateway . un mount () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġlet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . warn ( TAG , Ġ"[ unregister Sub Router ] ĠSub Ġrouter Ġ'$ gateway Name ' Ġisn 't Ġfound Ġin Ġgateway , Ġignore ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Static Resource Handler ( router : ĠRouter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠF av icon ĊĠĠĠĠĠĠĠ Ġrouter . get ("/ favicon . ico "). blocking Handler Ġ{ Ġctx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . file System (). readFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( static Resource Root ). canonical Path Ġ+ Ġ"/ favicon . ico " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . succeeded ()) Ġctx . end ( it . result ()) Ġelse Ġctx . fail ( 4 0 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAnother Ġstatic Ġresource ĊĠĠĠĠĠĠĠ Ġrouter . route (). last (). blocking Handler Ġ{ Ġctx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert x . file System (). readFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( static Resource Root ). canonical Path Ġ+ Ġctx . normalized Path () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . succeeded ()) Ġctx . end ( it . result ()) Ġelse Ġctx . fail ( 4 0 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }