package Ġcom . hy pto . iam . server . configs Ċ Ċ import Ġcom . sk sam uel . hop lite . Config Loader Ċ Ċ class ĠApp Config Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ ĠEnvironment Ġvariables Ġshould Ġbe Ġin ĠSn ake Ġcase . ĊĠĠĠĠ ĠE . g . Ġenv , Ġtoken _ validity ĊĊĠĠĠĠ ĠNested Ġvariables Ġshould Ġbe Ġdefined Ġwith Ġthe Ġdata Ġclass Ġname Ġfollowed Ġby Ġ 2 Ġunders cores Ġand Ġthen Ġthe Ġvariable Ġname ĊĠĠĠĠ Ġ{ data _ class _ name } __ { variable _ name } ĊĠĠĠĠ ĠE . g . ĠFor ĠDatabase Ġ- Ġdatabase __ host , Ġdatabase __ port , Ġdatabase __ username , Ġdatabase __ password ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġdata Ġclass ĠDatabase ( ĊĠĠĠĠĠĠĠ Ġval Ġhost : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġport : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġusername : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġpassword : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġmaximum PoolSize : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġminimum Idle : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġis Auto Commit : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Isolation : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjdbc Url : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" jdbc : postgresql :// $ host :$ port / iam " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠEnvironment Ġ{ ĠDevelopment , ĠSt aging , ĠProduction Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġjwt Token Validity ĠRepresents Ġhow Ġlong Ġthe ĠJWT Ġtoken Ġmust Ġbe Ġvalid Ġfrom Ġthe Ġinstant Ġof Ġcreation ĊĠĠĠĠ Ġ* Ġ@ param Ġold Key T tl ĠRepresents Ġthe ĠTTL Ġin Ġseconds Ġuntil Ġwhich Ġthe Ġrotated Ġkey Ġmust Ġbe Ġavailable Ġfor ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ing Ġsignatures Ġ( Default : Ġ 6 0 0 s , Ġ 2 X Ġthe Ġlocal Ġcache Ġduration ) ĊĠĠĠĠ Ġ* Ġ@ param Ġsecret Key ĠInternal Ġkey Ġto Ġcreate Ġ& Ġdelete Ġorganizations ĊĠĠĠĠ Ġ* Ġ@ param Ġsign Key Fetch Interval ĠRepresents Ġhow Ġfrequently Ġthe Ġprivate Ġkey ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġsigning ĠJWT Ġtokens Ġmust Ġbe Ġfetched Ġfrom ĠDB ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠApp ( ĊĠĠĠĠĠĠĠ Ġval Ġenv : ĠEnvironment , ĊĠĠĠĠĠĠĠ Ġval Ġjwt Token Validity : ĠLong , ĊĠĠĠĠĠĠĠ Ġval Ġold Key T tl : ĠLong , ĊĠĠĠĠĠĠĠ Ġval Ġsecret Key : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġsign Key Fetch Interval : ĠLong ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Development : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġenv Ġ== ĠEnvironment . Development ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠGet ĠNew Rel ic Ġlicence Ġkey Ġfrom Ġhttps :// one . new relic . com / admin - portal / api - keys / home ĊĠĠĠ Ġdata Ġclass ĠNew relic ( val ĠapiKey : ĠString , Ġval Ġpublish Interval : ĠLong ) ĊĊĠĠĠ Ġdata Ġclass ĠAws ( val Ġregion : ĠString , Ġval Ġaccess Key : ĠString , Ġval Ġsecret Key : ĠString ) ĊĠĠĠ Ġdata Ġclass ĠConfig ( val Ġapp : ĠApp , Ġval Ġdatabase : ĠDatabase , Ġval Ġnew relic : ĠNew relic , Ġval Ġaws : ĠAws ) ĊĠĠĠ Ġval Ġconfiguration : ĠConfig Ġ= ĠConfig Loader (). load Config OrThrow ("/ default _ config . json ") Ċ } Ċ