package Ġcom . nim bus framework . nim bus aws . cloudformation . generation . ab stractions Ċ Ċ import Ġcom . nim bus framework . nim bus core . annotations . function . HttpServer less Function Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . outputs . WebSocket Api Output Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . processing . File Builder Method Information Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . Iam Role Resource Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . Log Group Resource Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . Nim bus Bucket Resource Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . Resource Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . basic . Cron Rule Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . d ynamo . D ynamo Stream Resource Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . function . Function Config Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . function . Function Event Mapping Resource Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . function . Function Permission Resource Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . function . Function Resource Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . nim bus framework . nim bus aws . annotation . processor . Processing Data Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . generation . resources . apigateway . Http Function Resource Creator . Companion . get Allowed Headers Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . generation . resources . apigateway . Http Function Resource Creator . Companion . get Allowed Origin Ċ import Ġcom . nim bus framework . nim bus core . annotations . function . HttpMethod Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . Cloud Formation Files Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . http . Abstract Rest Resource Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . http . Cors Rest Method Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . http . RestApi Resource Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . http . Rest Method Ċ import Ġcom . nim bus framework . nim bus aws . cloudformation . model . resource . websocket .* Ċ import Ġcom . nim bus framework . nim bus core . pers isted . Export Information Ċ import Ġcom . nim bus framework . nim bus core . pers isted . Handler Information Ċ Ċ class ĠFunction Environment Service ( ĊĠĠĠ Ġprivate Ġval Ġcloud Formation Files : ĠMutable Map < String , ĠCloudFormation Files >, ĊĠĠĠ Ġprivate Ġval Ġprocessing Data : ĠProcessing Data Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġn im bus State Ġ= Ġprocessing Data . nim bus State ĊĊĠĠĠ Ġfun Ġnew Function ( file Builder Method Information : ĠFile Builder Method Information , Ġhandler Information : ĠHandler Information , Ġfunction Config : ĠFunction Config ): ĠFunction Resource Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfunction Ġ= ĠFunction Resource ( file Builder Method Information , Ġfunction Config , Ġhandler Information , Ġn im bus State ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbucket Ġ= ĠNim bus Bucket Resource ( nim bus State , Ġfunction Config . stage ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcloud Formation Documents Ġ= Ġcloud Formation Files . get Or Put ( function Config . stage ) Ġ{ ĠCloudFormation Files ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn im bus State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Config . stage ĊĠĠĠĠĠĠĠ Ġ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġupdate Resources Ġ= Ġcloud Formation Documents . update Template . resources ĊĠĠĠĠĠĠĠ Ġval Ġcreate Resources Ġ= Ġcloud Formation Documents . create Template . resources ĊĊĠĠĠĠĠĠĠ Ġupdate Resources . addFunction ( function ) ĊĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( bucket ) ĊĊĠĠĠĠĠĠĠ Ġcreate Resources . add Resource ( bucket ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfunction ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew HttpMethod ( http Function : ĠHttp Server less Function , Ġfunction : ĠFunction Resource ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Parts Ġ= Ġhttp Function . path . split ("/") ĊĊĠĠĠĠĠĠĠ Ġval Ġupdate Template Ġ= Ġcloud Formation Files [ function . stage ] !!. update Template ĊĠĠĠĠĠĠĠ Ġval Ġupdate Resources Ġ= Ġupdate Template . resources ĊĊĠĠĠĠĠĠĠ Ġval Ġrest Api Ġ= Ġupdate Template . get OrCreate Root RestApi () ĊĊĠĠĠĠĠĠĠ Ġval Ġapi Gateway Deployment Ġ= Ġupdate Template . get OrCreate Root RestApi Deployment () ĊĊĠĠĠĠĠĠĠ Ġvar Ġresource : ĠAbstract Rest Resource Ġ= Ġrest Api ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( part Ġin Ġpath Parts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( part . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource Ġ= ĠRest Api Resource ( resource , Ġpart , Ġn im bus State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( resource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġhttp Function . method . name ĊĠĠĠĠĠĠĠ Ġval Ġrest Method Ġ= ĠRest Method ( resource , Ġmethod , Ġmap Of (), Ġfunction , Ġupdate Template . get RestApi Author izer (), Ġn im bus State ) ĊĠĠĠĠĠĠĠ Ġapi Gateway Deployment . add Dep ends On ( rest Method ) ĊĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( rest Method ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( http Function . method Ġ!= ĠHttpMethod . OPTIONS Ġ&& Ġhttp Function . method Ġ!= ĠHttpMethod . ANY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġallowed Headers Ġ= Ġget Allowed Headers ( function . stage , Ġprocessing Data , Ġhttp Function ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġallowed Origin Ġ= Ġget Allowed Origin ( function . stage , Ġprocessing Data , Ġhttp Function ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( allowed Headers . isNotEmpty () Ġ|| Ġallowed Origin . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Cors Method Ġ= ĠC ors Rest Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn im bus State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexisting Cors Method Ġ= Ġupdate Resources . get ( new Cors Method . getName ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcors Method Ġ= Ġif Ġ( existing Cors Method Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Gateway Deployment . add Dep ends On ( new Cors Method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( new Cors Method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Cors Method ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexisting Cors Method Ġas ĠC ors Rest Method ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcors Method . add Headers ( allowed Headers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcors Method . add Origin ( allowed Origin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcors Method . add Method ( http Function . method ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpermission Ġ= ĠFunction Permission Resource ( function , Ġrest Api , Ġn im bus State ) ĊĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( permission ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġnew Store Trigger ( store : ĠResource , Ġfunction : ĠFunction Resource ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcf Documents Ġ= Ġcloud Formation Files [ function . stage ] !! ĊĠĠĠĠĠĠĠ Ġval Ġupdate Resources Ġ= Ġcf Documents . update Template . resources ĊĊĠĠĠĠĠĠĠ Ġval Ġevent Mapping Ġ= ĠFunction Event Mapping Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstore . getAttribute (" Stream Arn "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstore . getName (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn im bus State ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( event Mapping ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstream Specification Ġ= ĠJsonObject () ĊĠĠĠĠĠĠĠ Ġstream Specification . addProperty (" Stream ViewType ", Ġ" NEW _ AND _ OLD _ I MAGES ") ĊĠĠĠĠĠĠĠ Ġstore . add Extra Property (" Stream Specification ", Ġstream Specification ) ĊĊĠĠĠĠĠĠĠ Ġval Ġd ynamo Stream Resource Ġ= ĠD ynamo Stream Resource ( store , Ġn im bus State ) ĊĊĠĠĠĠĠĠĠ Ġfunction . iam Role Resource . add Allow Statement (" dynamodb :* ", Ġd ynamo Stream Resource , Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew Cron Trigger ( cron : ĠString , Ġfunction : ĠFunction Resource ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcf Documents Ġ= Ġcloud Formation Files [ function . stage ] !! ĊĠĠĠĠĠĠĠ Ġval Ġupdate Resources Ġ= Ġcf Documents . update Template . resources ĊĊĠĠĠĠĠĠĠ Ġval Ġcron Rule Ġ= ĠC ron Rule ( cron , Ġfunction , Ġn im bus State ) ĊĠĠĠĠĠĠĠ Ġval Ġlambda Permission Resource Ġ= ĠFunction Permission Resource ( function , Ġcron Rule , Ġn im bus State ) ĊĊĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( cron Rule ) ĊĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( lambda Permission Resource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnew WebSocket Route ( route Key : ĠString , Ġfunction : ĠFunction Resource ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupdate Template Ġ= Ġcloud Formation Files [ function . stage ] !!. update Template ĊĠĠĠĠĠĠĠ Ġval Ġupdate Resources Ġ= Ġupdate Template . resources ĊĠĠĠĠĠĠĠ Ġval Ġupdate Outputs Ġ= Ġupdate Template . outputs ĊĊĠĠĠĠĠĠĠ Ġval Ġweb Socket Api Ġ= Ġif Ġ( update Template . root WebSocket Api Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweb Socket Api Ġ= ĠWebSocket Api ( nim bus State , Ġfunction . stage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template . root WebSocket Api Ġ= Ġweb Socket Api ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( web Socket Api ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweb Socket Api Output Ġ= ĠWebSocket Api Output ( web Socket Api , Ġn im bus State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Outputs . add Output ( web Socket Api Output ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexport Information Ġ= ĠExport Information ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Socket Api Output . get Export Name (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Created ĠWebSocket ĠAPI . ĠBase ĠURL Ġis Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ ${ NIM BUS _ WEB SOCKET _ API _ URL }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexports Ġ= Ġn im bus State . exports . get Or Put ( function . stage ) Ġ{ Ġmutable ListOf ()} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexports . add ( export Information ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Socket Api ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template . root WebSocket Api !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġweb Socket Deployment Ġ= Ġif Ġ( update Template . web Socket Deployment Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweb Socket Deployment Ġ= ĠWebSocket Deployment ( web Socket Api , Ġn im bus State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template . web Socket Deployment Ġ= Ġweb Socket Deployment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstage Ġ= ĠWebSocket Stage ( web Socket Api , Ġweb Socket Deployment , Ġn im bus State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( web Socket Deployment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( stage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Socket Deployment ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Template . web Socket Deployment !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġintegration Ġ= ĠWebSocket Integration ( web Socket Api , Ġfunction , Ġroute Key , Ġn im bus State ) ĊĠĠĠĠĠĠĠ Ġval Ġroute Ġ= ĠWebSocket Route ( web Socket Api , Ġintegration , Ġroute Key , Ġn im bus State ) ĊĊĠĠĠĠĠĠĠ Ġweb Socket Deployment . add Dep ends On ( route ) ĊĊĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( integration ) ĊĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( route ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfunction Permission Resource Ġ= ĠFunction Permission Resource ( function , Ġweb Socket Api , Ġn im bus State ) ĊĊĠĠĠĠĠĠĠ Ġupdate Resources . add Resource ( function Permission Resource ) ĊĠĠĠ Ġ} Ċ } Ċ