package Ġno . sk at te et aten . aur ora . go bo . integration . b oo ber Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonProperty Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġmu . Kotlin Logging Ċ import Ġno . sk at te et aten . aur ora . go bo . Service Types Ċ import Ġno . sk at te et aten . aur ora . go bo . graphql . aur or acon fig . A ur ora Config Ċ import Ġno . sk at te et aten . aur ora . go bo . graphql . aur or acon fig . A ur ora ConfigFile Resource Ċ import Ġno . sk at te et aten . aur ora . go bo . integration . Source System Exception Ċ import Ġno . sk at te et aten . aur ora . go bo . integration . mo key . Application Deployment Details Resource Ċ import Ġno . sk at te et aten . aur ora . go bo . integration . mo key . Application Deployment Ref Resource Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . web . util . Uri Components Builder Ċ Ċ private Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{ Ġ} Ċ Ċ @ Service Ċ class ĠA ur ora Config Service ( ĊĠĠĠ Ġprivate Ġval Ġb oo ber Web Client : ĠB oo ber Web Client Ċ ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġget A ur ora Config ( token : ĠString , Ġa ur ora Config : ĠString , Ġreference : ĠString ): ĠA ur ora Config Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġb oo ber Web Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get < A ur ora Config >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ"/ v 2 / aur or acon fig /{ aur ora Config }? reference ={ reference }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġmap Of (" aur ora Config " Ġto Ġa ur ora Config , Ġ" reference " Ġto Ġreference ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). response () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget A ur ora Config Files ( ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ Ġa ur ora Config Name : ĠString , ĊĠĠĠĠĠĠĠ Ġenvironment : ĠString , ĊĠĠĠĠĠĠĠ Ġapplication : ĠString , ĊĠĠĠĠĠĠĠ Ġgit Reference : ĠString ĊĠĠĠ Ġ): ĠList < A ur ora ConfigFile Resource > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġb oo ber Web Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get < A ur ora ConfigFile Resource >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ"/ v 1 / aur or acon fig /{ aur ora Config Name }/ files /{ environment }/{ application }? reference ={ git Reference }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aur ora Config Name " Ġto Ġa ur ora Config Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" environment " Ġto Ġenvironment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" application " Ġto Ġapplication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" git Reference " Ġto Ġgit Reference ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). responses () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate A ur ora ConfigFile ( ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ Ġa ur ora Config : ĠString , ĊĠĠĠĠĠĠĠ Ġreference : ĠString , ĊĠĠĠĠĠĠĠ ĠfileName : ĠString , ĊĠĠĠĠĠĠĠ Ġcontent : ĠString , ĊĠĠĠĠĠĠĠ Ġold Hash : ĠString ĊĠĠĠ Ġ): ĠA ur ora ConfigFile Resource Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ"/ v 2 / aur or acon fig /{ aur ora Config }? reference ={ reference }" ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġmap Of (" content " Ġto Ġcontent , Ġ" fileName " Ġto ĠfileName ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġb oo ber Web Client . put < A ur ora ConfigFile Resource >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġmap Of (" aur ora Config " Ġto Ġa ur ora Config , Ġ" reference " Ġto Ġreference ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġbody , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet ag Ġ= Ġold Hash ĊĠĠĠĠĠĠĠ Ġ). response () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġadd A ur ora ConfigFile ( ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ Ġa ur ora Config : ĠString , ĊĠĠĠĠĠĠĠ Ġreference : ĠString , ĊĠĠĠĠĠĠĠ ĠfileName : ĠString , ĊĠĠĠĠĠĠĠ Ġcontent : ĠString ĊĠĠĠ Ġ): ĠA ur ora ConfigFile Resource Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ"/ v 2 / aur or acon fig /{ aur ora Config }? reference ={ reference }" ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġmap Of (" content " Ġto Ġcontent , Ġ" fileName " Ġto ĠfileName ) ĊĠĠĠĠĠĠĠ Ġreturn Ġb oo ber Web Client . put < A ur ora ConfigFile Resource >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġmap Of (" aur ora Config " Ġto Ġa ur ora Config , Ġ" reference " Ġto Ġreference ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġbody , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġtoken ĊĠĠĠĠĠĠĠ Ġ). response () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Application File ( token : ĠString , Ġurl : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa ur ora Config Ġ= Ġ"( ?< =/ aur or acon fig / )( .+ )( ? =( \\ ? )) ". to Regex (). find ( url )?. value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠSource System Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Unable Ġto Ġlookup Ġapplication Ġfile , Ġcould Ġnot Ġfind Ġaffili ation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintegration Response Ġ= Ġ" Could Ġnot Ġfind Ġa ur or acon fig Ġin Ġurl Ġfrom Ġmo key , Ġurl :$ url ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource System Ġ= ĠService Types . BO OB ER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠqueryParams Ġ= ĠUri Components Builder . from Http Url ( url ). build (). queryParams . to Single Value Map () ĊĠĠĠĠĠĠĠ Ġval ĠqueryParams String Ġ= ĠqueryParams . keys . join ToString ( separator Ġ= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ it ={ $ it }& " ĊĠĠĠĠĠĠĠ Ġ}. remove Suffix ("& ") ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Template Ġ= Ġ"/ v 1 / aur or acon fig /{ aur ora Config } ?$ queryParams String " ĊĠĠĠĠĠĠĠ Ġlogger . debug Ġ{ Ġ" getApplication File , Ġurl =$ url Ġurl Template =$ url Template " Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġb oo ber Web Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get < A ur ora ConfigFile Resource >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġtoken , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġurl Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= ĠqueryParams . apply Ġ{ Ġput (" aur ora Config ", Ġa ur ora Config ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. responses () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . type Ġ== ĠA ur ora Config FileType . APP Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġre deploy ( ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ Ġdetails : ĠApplication Deployment Details Resource , ĊĠĠĠĠĠĠĠ Ġapply Link : ĠString ĊĠĠĠ Ġ): ĠRe deploy Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpayload Ġ= ĠApply Payload ( listOf ( details . application Deployment Command . application Deployment Ref )) ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġb oo ber Web Client . put < JsonNode >( url Ġ= Ġapply Link , Ġtoken Ġ= Ġtoken , Ġbody Ġ= Ġpayload ). response () ĊĠĠĠĠĠĠĠ Ġreturn ĠRe deploy Response ( json ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠRe deploy Response ( private Ġval Ġjson : ĠJsonNode ) Ġ{ ĊĊĠĠĠ Ġval Ġapplication Deployment Id : ĠString ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" id ") ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġjson . at ("/ application Deployment Id "). text Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" No Ġapplication Deployment Id Ġfound Ġin Ġresponse ") ĊĊĠĠĠ Ġval Ġaffili ation : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġjson . at ("/ deployment Spec / aff iliation / value "). text Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" No Ġaffili ation Ġfound Ġin Ġresponse ") Ċ } Ċ Ċ data Ġclass ĠA ur ora ConfigFile Resource ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġcontents : ĠString , ĊĠĠĠ Ġval Ġtype : ĠA ur ora Config FileType , ĊĠĠĠ Ġval Ġcontent Hash : ĠString Ċ ) Ċ Ċ enum Ġclass ĠA ur ora Config FileType Ġ{ ĊĠĠĠ ĠDEFAULT , ĊĠĠĠ ĠGLOBAL , ĊĠĠĠ ĠGLOBAL _ OVERRIDE , ĊĠĠĠ ĠBASE , ĊĠĠĠ ĠBASE _ OVERRIDE , ĊĠĠĠ ĠINCLUDE _ ENV , ĊĠĠĠ ĠENV , ĊĠĠĠ ĠENV _ OVERRIDE , ĊĠĠĠ ĠAPP , ĊĠĠĠ ĠAPP _ OVERRIDE Ċ } Ċ Ċ data Ġclass ĠApply Payload ( ĊĠĠĠ Ġval Ġapplication Deployment Refs : ĠList < Application Deployment Ref Resource > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġoverrides : ĠMap < String , ĠString > Ġ= Ġmap Of () Ċ ) Ċ