package Ġno . nav . sy fo . application Ċ Ċ import Ġcom . auth 0 . j wk . J wk Provider Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Feature Ċ import Ġcom . fasterxml . jackson . databind . Serialization Feature Ċ import Ġcom . fasterxml . jackson . datatype . js r 3 1 0 . Java Time Module Ċ import Ġcom . fasterxml . jackson . module . kotlin . register Kotlin Module Ċ import Ġio . ktor . http . HttpHeaders Ċ import Ġio . ktor . http . HttpMethod Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . serialization . jackson . jackson Ċ import Ġio . ktor . server . application . Application Call Pipeline Ċ import Ġio . ktor . server . application . install Ċ import Ġio . ktor . server . auth . authenticate Ċ import Ġio . ktor . server . engine . Application Engine Ċ import Ġio . ktor . server . engine . embedded Server Ċ import Ġio . ktor . server . netty . Net ty Ċ import Ġio . ktor . server . plugins . call id . Call Id Ċ import Ġio . ktor . server . plugins . content neg otiation . Content Neg otiation Ċ import Ġio . ktor . server . plugins . cors . C ORS Ċ import Ġio . ktor . server . plugins . status pages . Status Pages Ċ import Ġio . ktor . server . response . respond Ċ import Ġio . ktor . server . routing . routing Ċ import Ġno . nav . sy fo . Environment Ċ import Ġno . nav . sy fo . application . api . register N ais Api Ċ import Ġno . nav . sy fo . application . api . setup Swagger Doc Api Ċ import Ġno . nav . sy fo . application . metrics . monitor Http Requests Ċ import Ġno . nav . sy fo . log Ċ import Ġno . nav . sy fo . min es yk meld te . Mine Sy k meld te Service Ċ import Ġno . nav . sy fo . min es yk meld te . api . register Mine Sy k meld te Api Ċ import Ġno . nav . sy fo . nar me ste le der . N ar me ste le der Service Ċ import Ġno . nav . sy fo . nar me ste le der . api . register N ar me ste le der Api Ċ import Ġno . nav . sy fo . vir ks om het . api . V ir ks om het Service Ċ import Ġno . nav . sy fo . vir ks om het . api . register V ir ks om het Api Ċ import Ġjava . util . UUID Ċ import Ġkotlin . time . Experimental Time Ċ Ċ @ Experimental Time Ċ fun Ġcreate Application Engine ( ĊĠĠĠ Ġenv : ĠEnvironment , ĊĠĠĠ Ġj wk Provider Token X : ĠJ wk Provider , ĊĠĠĠ Ġtoken X Issuer : ĠString , ĊĠĠĠ Ġapplication State : ĠApplication State , ĊĠĠĠ Ġmine Sy k meld te Service : ĠM ine Sy k meld te Service , ĊĠĠĠ Ġvir ks om het Service : ĠV ir ks om het Service , ĊĠĠĠ Ġn ar me ste le der Service : ĠN ar me ste le der Service Ċ ): ĠApplication Engine Ġ= ĊĠĠĠ Ġembedded Server ( Net ty , Ġenv . application Port ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstall ( Content Neg otiation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj ack son Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Kotlin Module () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Module ( Java Time Module ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure ( Serialization Feature . WRITE _ DAT ES _ AS _ TIMESTAMP S , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure ( Deserialization Feature . FAIL _ ON _ UNKNOWN _ PROPERTIES , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsetup Auth ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj wk Provider Token X Ġ= Ġj wk Provider Token X , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken X Issuer Ġ= Ġtoken X Issuer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenv Ġ= Ġenv ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinstall ( Call Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Ġ{ ĠUUID . randomUUID (). toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġcall Id : ĠString Ġ-> Ġcall Id . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( HttpHeaders . X Correlation Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinstall ( Status Pages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception < Throwable > Ġ{ Ġcall , Ġcause Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Ca ught Ġexception ", Ġcause ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . InternalServerError , Ġcause . message Ġ?: Ġ" Unknown Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinstall ( C ORS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Method ( HttpMethod . Get ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenv . allowed Origin . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhosts . add (" https :// $ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Header (" nav _ csrf _ protection ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Header (" Sy k meld t - Fn r ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Credentials Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Non Simple Content Types Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrouting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister N ais Api ( application State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( env . cluster Ġ== Ġ" dev - gcp ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Swagger Doc Api () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthenticate (" token x ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Mine Sy k meld te Api ( mine Sy k meld te Service ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister V ir ks om het Api ( vir ks om het Service ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister N ar me ste le der Api ( nar me ste le der Service ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġintercept ( Application Call Pipeline . Monitoring , Ġmonitor Http Requests ()) ĊĠĠĠ Ġ} Ċ