From 42c353a30bf0189ea4f0340e0c8251375483f3df Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Wed, 31 Mar 2021 20:09:32 +0200 Subject: Add more options for getting configuration values --- src/IOL.VippsEcommerce/Models/VippsConfiguration.cs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/IOL.VippsEcommerce/Models/VippsConfiguration.cs') diff --git a/src/IOL.VippsEcommerce/Models/VippsConfiguration.cs b/src/IOL.VippsEcommerce/Models/VippsConfiguration.cs index e1b339e..d8b3a0f 100644 --- a/src/IOL.VippsEcommerce/Models/VippsConfiguration.cs +++ b/src/IOL.VippsEcommerce/Models/VippsConfiguration.cs @@ -101,19 +101,29 @@ namespace IOL.VippsEcommerce.Models /// Use environment variables for configuration. /// If this is true, all requested properties are looked for in the environment. /// - public bool UseEnvironment { get; set; } + public VippsConfigurationMode ConfigurationMode { get; set; } = VippsConfigurationMode.ONLY_OBJECT; /// /// Get value from configuration, either from Dependency injection or from the environment. /// /// Configuration key. - /// Fallback value if the key is not found or empty. /// A string containing the configuration value (or a fallback). - public string GetValue(string key, string fallback = default) { - if (UseEnvironment) { - return Environment.GetEnvironmentVariable(key) ?? fallback; + public string GetValue(string key) { + switch (ConfigurationMode) { + case VippsConfigurationMode.ONLY_OBJECT: + return GetValueFromObject(key); + case VippsConfigurationMode.ONLY_ENVIRONMENT: + return Environment.GetEnvironmentVariable(key); + case VippsConfigurationMode.OBJECT_THEN_ENVIRONMENT: + return GetValueFromObject(key) ?? Environment.GetEnvironmentVariable(key); + case VippsConfigurationMode.ENVIRONMENT_THEN_OBJECT: + return Environment.GetEnvironmentVariable(key) ?? GetValueFromObject(key); + default: + return default; } + } + private string GetValueFromObject(string key) { foreach (var prop in typeof(VippsConfiguration).GetProperties()) { foreach (var attribute in prop.CustomAttributes) { foreach (var argument in attribute.ConstructorArguments) { -- cgit v1.3