package Ġno . nav . dag p enger . inn te kt Ċ Ċ import Ġcom . nat pr y ce . kon fig . Configuration Ċ import Ġcom . nat pr y ce . kon fig . Configuration Map Ċ import Ġcom . nat pr y ce . kon fig . Configuration Properties Ċ import Ġcom . nat pr y ce . kon fig . Environment Variables Ċ import Ġcom . nat pr y ce . kon fig . Key Ċ import Ġcom . nat pr y ce . kon fig . int Type Ċ import Ġcom . nat pr y ce . kon fig . over riding Ċ import Ġcom . nat pr y ce . kon fig . string Type Ċ import Ġno . fin n . un le ash . util . Un le ash Config Ċ import Ġno . nav . dag p enger . inn te kt . Config . application Ċ import Ġno . nav . dag p enger . streams . Credential Ċ import Ġno . nav . dag p enger . streams . Kafka A iven Credentials Ċ import Ġjava . net . Inet Address Ċ import Ġjava . net . Unknown Host Exception Ċ Ċ internal Ġobject ĠConfig Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlocal Properties Ġ= ĠConfiguration Map ( ĊĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . host " Ġto Ġ" localhost ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . port " Ġto Ġ" 5 4 3 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . name " Ġto Ġ" dp - inn te kt - db ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . user " Ġto Ġ" postgres ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . password " Ġto Ġ" postgres ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vault . mo un tp ath " Ġto Ġ" postgresql / dev /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" K AF KA _ BRO K ERS " Ġto Ġ" localhost : 9 0 9 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" application . profile " Ġto Ġ" LOCAL ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" application . http Port " Ġto Ġ" 8 0 9 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ent inn te kt liste . url " Ġto Ġ" https :// localhost / inn tek ts k omp onent en - ws / rs / api / v 1 / h ent inn te kt liste ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" en hets register et . url " Ġto Ġ" https :// data . br reg . no / en hets register et / api ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" oidc . sts . issuer url " Ġto Ġ" http :// localhost /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jw ks . url " Ġto Ġ" https :// localhost ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jw ks . issuer " Ġto Ġ" https :// localhost ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" srv dp . inn te kt . api . username " Ġto Ġ" postgres ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" srv dp . inn te kt . api . password " Ġto Ġ" postgres ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fly way . locations " Ġto Ġ" db / migration , db / testdata ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" api . secret " Ġto Ġ" secret ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" api . keys " Ġto Ġ" dp - datal aster - inn te kt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" kafka . inn te kt . br uk t . topic " Ġto Ġ" team dag p enger . inn te kt br uk t . v 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" un le ash . url " Ġto Ġ" http :// localhost / api /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" p dl . url " Ġto Ġ" http :// localhost : 4 3 2 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" en hets register et . url " Ġto Ġ" https :// data . br reg . no / en hets register et " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġdev Properties Ġ= ĠConfiguration Map ( ĊĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . host " Ġto Ġ" b 2 7 db vl 0 1 3 . pre prod . local ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . port " Ġto Ġ" 5 4 3 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . name " Ġto Ġ" dp - inn te kt - db - q 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fly way . locations " Ġto Ġ" db / migration , db / testdata ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vault . mo un tp ath " Ġto Ġ" postgresql / pre prod - f ss /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ent inn te kt liste . url " Ġto Ġ" https :// app - q 1 . ade o . no / inn tek ts k omp onent en - ws / rs / api / v 1 / h ent inn te kt liste ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" en hets register et . url " Ġto Ġ" https :// data . br reg . no / en hets register et / api ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" oidc . sts . issuer url " Ġto Ġ" https :// security - token - service . na is . pre prod . local /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jw ks . url " Ġto Ġ" https :// is so - q . ade o . no : 4 4 3 / is so / oauth 2 / connect / j wk _ uri ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jw ks . issuer " Ġto Ġ" https :// is so - q . ade o . no : 4 4 3 / is so / oauth 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" application . profile " Ġto Ġ" DEV ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" application . http Port " Ġto Ġ" 8 0 9 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" kafka . inn te kt . br uk t . topic " Ġto Ġ" team dag p enger . inn te kt br uk t . v 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" un le ash . url " Ġto Ġ" https :// un le ash . na is . io / api /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" p dl . url " Ġto Ġ" http :// p dl - api . default . svc . na is . local / graphql ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" en hets register et . url " Ġto Ġ" https :// data . br reg . no / en hets register et " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġprod Properties Ġ= ĠConfiguration Map ( ĊĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . host " Ġto Ġ" fs sp gdb . ade o . no ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . port " Ġto Ġ" 5 4 3 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" database . name " Ġto Ġ" dp - inn te kt - db ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fly way . locations " Ġto Ġ" db / migration ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vault . mo un tp ath " Ġto Ġ" postgresql / prod - f ss /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ent inn te kt liste . url " Ġto Ġ" https :// app . ade o . no / inn tek ts k omp onent en - ws / rs / api / v 1 / h ent inn te kt liste ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" en hets register et . url " Ġto Ġ" https :// data . br reg . no / en hets register et / api ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" oidc . sts . issuer url " Ġto Ġ" https :// security - token - service . na is . ade o . no /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jw ks . url " Ġto Ġ" https :// is so . ade o . no : 4 4 3 / is so / oauth 2 / connect / j wk _ uri ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jw ks . issuer " Ġto Ġ" https :// is so . ade o . no : 4 4 3 / is so / oauth 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" application . profile " Ġto Ġ" PRO D ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" application . http Port " Ġto Ġ" 8 0 9 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" kafka . inn te kt . br uk t . topic " Ġto Ġ" team dag p enger . inn te kt br uk t . v 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" un le ash . url " Ġto Ġ" https :// un le ash . na is . io / api /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" p dl . url " Ġto Ġ" http :// p dl - api . default . svc . na is . local / graphql ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" en hets register et . url " Ġto Ġ" https :// data . br reg . no / en hets register et " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġconfig Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( System . getenv (" NA IS _ CLUSTER _ NAME ") Ġ?: ĠSystem . getProperty (" NA IS _ CLUSTER _ NAME ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dev - f ss " Ġ-> ĠConfiguration Properties . system Properties () Ġoverriding ĠEnvironment Variables Ġoverriding Ġdev Properties ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" prod - f ss " Ġ-> ĠConfiguration Properties . system Properties () Ġoverriding ĠEnvironment Variables Ġoverriding Ġprod Properties ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration Properties . system Properties () Ġoverriding ĠEnvironment Variables Ġoverriding Ġlocal Properties ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠConfiguration . database ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠIn n te kt Api Config . Database ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġthis [ Key (" database . host ", Ġstring Type )], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport Ġ= Ġthis [ Key (" database . port ", Ġstring Type )], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġthis [ Key (" database . name ", Ġstring Type )], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= Ġthis . get OrNull ( Key (" database . user ", Ġstring Type )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġthis . get OrNull ( Key (" database . password ", Ġstring Type )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfly way Locations Ġ= Ġthis . get OrNull ( Key (" fly way . locations ", Ġstring Type )) ?. split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠlistOf (" db / migration ") ĊĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġval ĠConfiguration . vault Ġget () Ġ= ĠIn n te kt Api Config . Vault ( ĊĠĠĠĠĠĠĠ Ġmount Path Ġ= Ġthis [ Key (" vault . mo un tp ath ", Ġstring Type )] ĊĠĠĠ Ġ) ĊĠĠĠ Ġval ĠConfiguration . p dl Ġget () Ġ= ĠIn n te kt Api Config . P dl ( ĊĠĠĠĠĠĠĠ Ġurl Ġ= Ġthis [ Key (" p dl . url ", Ġstring Type )] ĊĠĠĠ Ġ) ĊĠĠĠ Ġval ĠConfiguration . en hets register Ġget () Ġ= ĠIn n te kt Api Config . En hets register ( ĊĠĠĠĠĠĠĠ Ġurl Ġ= Ġthis [ Key (" en hets register et . url ", Ġstring Type )] ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval ĠConfiguration . profile Ġget () Ġ= Ġthis [ Key (" application . profile ", Ġstring Type )]. let Ġ{ ĠProfile . valueOf ( it ) Ġ} ĊĊĠĠĠ Ġval ĠConfiguration . application Ġget () Ġ= ĠIn n te kt Api Config . Application ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġthis . getOrElse ( Key (" application . id ", Ġstring Type ), Ġ" dp - inn te kt - api - consumer "), ĊĠĠĠĠĠĠĠ Ġbro kers Ġ= Ġthis [ Key (" K AF KA _ BRO K ERS ", Ġstring Type )], ĊĠĠĠĠĠĠĠ Ġprofile Ġ= Ġthis . profile , ĊĠĠĠĠĠĠĠ Ġcredential Ġ= Ġif Ġ( this . profile Ġ== ĠProfile . LOCAL ) Ġnull Ġelse ĠKafka A iven Credentials (), ĊĠĠĠĠĠĠĠ Ġhttp Port Ġ= Ġthis [ Key (" application . http Port ", Ġint Type )], ĊĠĠĠĠĠĠĠ Ġusername Ġ= Ġthis [ Key (" srv dp . inn te kt . api . username ", Ġstring Type )], ĊĠĠĠĠĠĠĠ Ġpassword Ġ= Ġthis [ Key (" srv dp . inn te kt . api . password ", Ġstring Type )], ĊĠĠĠĠĠĠĠ Ġh ent inn te kt List e Url Ġ= Ġthis [ Key (" h ent inn te kt liste . url ", Ġstring Type )], ĊĠĠĠĠĠĠĠ Ġen hets register et Url Ġ= Ġthis [ Key (" en hets register et . url ", Ġstring Type )], ĊĠĠĠĠĠĠĠ Ġo ic d St s Url Ġ= Ġthis [ Key (" oidc . sts . issuer url ", Ġstring Type )], ĊĠĠĠĠĠĠĠ Ġj w ks Url Ġ= Ġthis [ Key (" jw ks . url ", Ġstring Type )], ĊĠĠĠĠĠĠĠ Ġj w ks Issuer Ġ= Ġthis [ Key (" jw ks . issuer ", Ġstring Type )], ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" dp - inn te kt - api ", ĊĠĠĠĠĠĠĠ Ġapi Secret Ġ= Ġthis [ Key (" api . secret ", Ġstring Type )], ĊĠĠĠĠĠĠĠ Ġallowed Api Keys Ġ= Ġthis [ Key (" api . keys ", Ġstring Type )]. split ("," ). toList (), ĊĠĠĠĠĠĠĠ Ġun le ash Config Ġ= ĠUn le ash Config . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. appName ( this . getOrElse ( Key (" app . name ", Ġstring Type ), Ġ" dp - inn te kt - api ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. instanceId ( get Hostname ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. un le ash API ( this [ Key (" un le ash . url ", Ġstring Type )]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval ĠConfiguration . inn te kt Api Config Ġget () Ġ= ĠIn n te kt Api Config ( ĊĠĠĠĠĠĠĠ Ġdatabase Ġ= Ġthis . database , ĊĠĠĠĠĠĠĠ Ġvault Ġ= Ġthis . vault , ĊĠĠĠĠĠĠĠ Ġapplication Ġ= Ġthis . application , ĊĠĠĠĠĠĠĠ Ġp dl Ġ= Ġthis . p dl , ĊĠĠĠĠĠĠĠ Ġen hets register et Url Ġ= Ġthis . en hets register , ĊĠĠĠĠĠĠĠ Ġinn te kt B ru kt Data Topic Ġ= Ġthis [ Key (" kafka . inn te kt . br uk t . topic ", Ġstring Type )] ĊĊĠĠĠ Ġ) Ċ } Ċ Ċ data Ġclass ĠIn n te kt Api Config ( ĊĠĠĠ Ġval Ġdatabase : ĠDatabase , ĊĠĠĠ Ġval Ġvault : ĠVault , ĊĠĠĠ Ġval Ġapplication : ĠApplication , ĊĠĠĠ Ġval Ġp dl : ĠP dl , ĊĠĠĠ Ġval Ġen hets register et Url : ĠEn hets register , ĊĠĠĠ Ġval Ġinn te kt B ru kt Data Topic : ĠString Ċ ) Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠDatabase ( ĊĠĠĠĠĠĠĠ Ġval Ġhost : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġport : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġuser : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġpassword : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġfly way Locations : ĠList < String > ĊĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠVault ( ĊĠĠĠĠĠĠĠ Ġval Ġmount Path : ĠString ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠApplication ( ĊĠĠĠĠĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġbro kers : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġprofile : ĠProfile , ĊĠĠĠĠĠĠĠ Ġval Ġcredential : ĠCredential ?, ĊĠĠĠĠĠĠĠ Ġval Ġhttp Port : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġusername : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġpassword : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġh ent inn te kt List e Url : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġen hets register et Url : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġo ic d St s Url : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġj w ks Url : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġj w ks Issuer : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġapi Secret : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġallowed Api Keys : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġval Ġun le ash Config : ĠUn le ash Config , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠP dl ( ĊĠĠĠĠĠĠĠ Ġval Ġurl : ĠString ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠEn hets register ( ĊĠĠĠĠĠĠĠ Ġval Ġurl : ĠString ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun Ġget Hostname (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaddr : ĠInet Address Ġ= ĠInet Address . getLocal Host () ĊĠĠĠĠĠĠĠ Ġaddr . host Name ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnknown Host Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" unknown " ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠProfile Ġ{ ĊĠĠĠ ĠLOCAL , ĠDEV , ĠPRO D Ċ } Ċ