@@ -152,14 +152,19 @@ std::string GetLaravelEnvVariable(const std::string& env_key) {
152152*/
153153
154154using EnvGetterFn = std::string(*)(const std::string&);
155- EnvGetterFn envGetters[] = {
155+
156+ const std::vector<EnvGetterFn> completeEnvGetters = {
156157 &GetSystemEnvVariable,
157158 &GetFrankenEnvVariable,
158159 &GetPhpEnvVariable,
159160 &GetLaravelEnvVariable
160161};
161162
162- std::string GetEnvVariable (const std::string& env_key) {
163+ const std::vector<EnvGetterFn> systemEnvGetters = {
164+ &GetSystemEnvVariable,
165+ };
166+
167+ std::string GetEnvVariable (const std::vector<EnvGetterFn>& envGetters, const std::string& env_key) {
163168 for (EnvGetterFn envGetter : envGetters) {
164169 std::string env_value = envGetter (env_key);
165170 if (!env_value.empty ()) {
@@ -169,8 +174,8 @@ std::string GetEnvVariable(const std::string& env_key) {
169174 return " " ;
170175}
171176
172- std::string GetEnvString (const std::string& env_key, const std::string default_value) {
173- std::string env_value = GetEnvVariable (env_key);
177+ std::string GetEnvString (const std::vector<EnvGetterFn>& envGetters, const std:: string& env_key, const std::string default_value) {
178+ std::string env_value = GetEnvVariable (envGetters, env_key);
174179 if (!env_value.empty ()) {
175180 return env_value;
176181 }
@@ -185,12 +190,16 @@ bool GetBoolFromString(const std::string& env, bool default_value) {
185190 return default_value;
186191}
187192
188- bool GetEnvBool (const std::string& env_key, bool default_value) {
189- return GetBoolFromString (GetEnvVariable (env_key), default_value);
193+ bool GetEnvBool (const std::vector<EnvGetterFn>& envGetters, const std:: string& env_key, bool default_value) {
194+ return GetBoolFromString (GetEnvVariable (envGetters, env_key), default_value);
190195}
191196
192- unsigned int GetEnvNumber (const std::string& env_key, unsigned int default_value) {
193- std::string env_value = GetEnvVariable (env_key.c_str ());
197+ bool GetEnvBoolWithAllGetters (const std::string& env_key, bool default_value) {
198+ return GetBoolFromString (GetEnvVariable (completeEnvGetters, env_key), default_value);
199+ }
200+
201+ unsigned int GetEnvNumber (const std::vector<EnvGetterFn>& envGetters, const std::string& env_key, unsigned int default_value) {
202+ std::string env_value = GetEnvVariable (envGetters, env_key);
194203 if (!env_value.empty ()) {
195204 try {
196205 unsigned int number = std::stoi (env_value);
@@ -203,26 +212,34 @@ unsigned int GetEnvNumber(const std::string& env_key, unsigned int default_value
203212 return default_value;
204213}
205214
206- void LoadEnvironment ( ) {
215+ void LoadEnvironmentFromGetters ( const std::vector<EnvGetterFn>& envGetters ) {
207216 auto & logLevelStr = AIKIDO_GLOBAL (log_level_str);
208217 auto & logLevel = AIKIDO_GLOBAL (log_level);
209- if (GetEnvBool (" AIKIDO_DEBUG" , false )) {
218+ if (GetEnvBool (envGetters, " AIKIDO_DEBUG" , false )) {
210219 logLevelStr = " DEBUG" ;
211220 logLevel = AIKIDO_LOG_LEVEL_DEBUG;
212221 } else {
213- logLevelStr = GetEnvString (" AIKIDO_LOG_LEVEL" , " WARN" );
222+ logLevelStr = GetEnvString (envGetters, " AIKIDO_LOG_LEVEL" , " WARN" );
214223 logLevel = Log::ToLevel (logLevelStr);
215224 }
216225
217- AIKIDO_GLOBAL (blocking) = GetEnvBool (" AIKIDO_BLOCK" , false ) || GetEnvBool (" AIKIDO_BLOCKING" , false ); ;
218- AIKIDO_GLOBAL (disable) = GetEnvBool (" AIKIDO_DISABLE" , false );
219- AIKIDO_GLOBAL (collect_api_schema) = GetEnvBool (" AIKIDO_FEATURE_COLLECT_API_SCHEMA" , true );
220- AIKIDO_GLOBAL (localhost_allowed_by_default) = GetEnvBool (" AIKIDO_LOCALHOST_ALLOWED_BY_DEFAULT" , true );
221- AIKIDO_GLOBAL (trust_proxy) = GetEnvBool (" AIKIDO_TRUST_PROXY" , true );
222- AIKIDO_GLOBAL (disk_logs) = GetEnvBool (" AIKIDO_DISK_LOGS" , false );
226+ AIKIDO_GLOBAL (blocking) = GetEnvBool (envGetters, " AIKIDO_BLOCK" , false ) || GetEnvBool (envGetters, " AIKIDO_BLOCKING" , false );
227+ AIKIDO_GLOBAL (disable) = GetEnvBool (envGetters, " AIKIDO_DISABLE" , false );
228+ AIKIDO_GLOBAL (collect_api_schema) = GetEnvBool (envGetters, " AIKIDO_FEATURE_COLLECT_API_SCHEMA" , true );
229+ AIKIDO_GLOBAL (localhost_allowed_by_default) = GetEnvBool (envGetters, " AIKIDO_LOCALHOST_ALLOWED_BY_DEFAULT" , true );
230+ AIKIDO_GLOBAL (trust_proxy) = GetEnvBool (envGetters, " AIKIDO_TRUST_PROXY" , true );
231+ AIKIDO_GLOBAL (disk_logs) = GetEnvBool (envGetters, " AIKIDO_DISK_LOGS" , false );
223232 AIKIDO_GLOBAL (sapi_name) = sapi_module.name ;
224- AIKIDO_GLOBAL (token) = GetEnvString (" AIKIDO_TOKEN" , " " );
225- AIKIDO_GLOBAL (endpoint) = GetEnvString (" AIKIDO_ENDPOINT" , " https://guard.aikido.dev/" );
226- AIKIDO_GLOBAL (config_endpoint) = GetEnvString (" AIKIDO_REALTIME_ENDPOINT" , " https://runtime.aikido.dev/" );
227- AIKIDO_GLOBAL (report_stats_interval_to_agent) = GetEnvNumber (" AIKIDO_REPORT_STATS_INTERVAL" , 100 );
228- }
233+ AIKIDO_GLOBAL (token) = GetEnvString (envGetters, " AIKIDO_TOKEN" , " " );
234+ AIKIDO_GLOBAL (endpoint) = GetEnvString (envGetters, " AIKIDO_ENDPOINT" , " https://guard.aikido.dev/" );
235+ AIKIDO_GLOBAL (config_endpoint) = GetEnvString (envGetters, " AIKIDO_REALTIME_ENDPOINT" , " https://runtime.aikido.dev/" );
236+ AIKIDO_GLOBAL (report_stats_interval_to_agent) = GetEnvNumber (envGetters, " AIKIDO_REPORT_STATS_INTERVAL" , 100 );
237+ }
238+
239+ void LoadEnvironment () {
240+ LoadEnvironmentFromGetters (completeEnvGetters);
241+ }
242+
243+ void LoadSystemEnvironment () {
244+ LoadEnvironmentFromGetters (systemEnvGetters);
245+ }
0 commit comments