diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2021-03-31 20:09:32 +0200 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2021-03-31 20:09:32 +0200 |
| commit | 42c353a30bf0189ea4f0340e0c8251375483f3df (patch) | |
| tree | f50f411173fefb35ff717d1e70a17b4e2929a880 /src/IOL.VippsEcommerce/Models/VippsConfiguration.cs | |
| parent | 2cc0a54c5a33c54688154a4594039e0760fa0aae (diff) | |
| download | dotnet-vipps-ecommerce-42c353a30bf0189ea4f0340e0c8251375483f3df.tar.xz dotnet-vipps-ecommerce-42c353a30bf0189ea4f0340e0c8251375483f3df.zip | |
Add more options for getting configuration values
Diffstat (limited to 'src/IOL.VippsEcommerce/Models/VippsConfiguration.cs')
| -rw-r--r-- | src/IOL.VippsEcommerce/Models/VippsConfiguration.cs | 20 |
1 files changed, 15 insertions, 5 deletions
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. /// <para>If this is true, all requested properties are looked for in the environment.</para> /// </summary> - public bool UseEnvironment { get; set; } + public VippsConfigurationMode ConfigurationMode { get; set; } = VippsConfigurationMode.ONLY_OBJECT; /// <summary> /// Get value from configuration, either from Dependency injection or from the environment. /// </summary> /// <param name="key">Configuration key.</param> - /// <param name="fallback">Fallback value if the key is not found or empty.</param> /// <returns>A string containing the configuration value (or a fallback).</returns> - 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) { |
