<PackageReference Include="Relativity.Server.Transfer.SDK" Version="7.7.0" />

InstanceSettingsConfigurationWebApiRetriever

using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Relativity.Transfer.InstanceSettings.Configuration { internal class InstanceSettingsConfigurationWebApiRetriever : IInstanceSettingsConfigurationRetriever { private const string _INSTANCE_SETTING_NOT_FOUND_MESSAGE = "Service did not return {InstanceSettingName} instance setting."; private const string _INSTANCE_SETTING_PARSE_FAILED_MESSAGE = "Service returned {InstanceSettingValue} value for {InstanceSettingName} instance setting which could not be parsed."; private readonly ITransferLog transferLog; private readonly IInstanceSettingRetriever webApiInstanceSettingRetriever; public InstanceSettingsConfigurationWebApiRetriever(ITransferLog transferLog, IInstanceSettingRetriever webApiInstanceSettingRetriever) { this.transferLog = transferLog; this.webApiInstanceSettingRetriever = webApiInstanceSettingRetriever; } [AsyncStateMachine(typeof(<GetConfigurationAsync>d__5))] public Task<InstanceSettingsConfiguration> GetConfigurationAsync(CancellationToken token) { <GetConfigurationAsync>d__5 stateMachine = default(<GetConfigurationAsync>d__5); stateMachine.<>t__builder = AsyncTaskMethodBuilder<InstanceSettingsConfiguration>.Create(); stateMachine.<>4__this = this; stateMachine.token = token; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<ExecuteRequestAsync>d__6))] private Task<IEnumerable<InstanceSetting>> ExecuteRequestAsync(CancellationToken token) { <ExecuteRequestAsync>d__6 stateMachine = default(<ExecuteRequestAsync>d__6); stateMachine.<>t__builder = AsyncTaskMethodBuilder<IEnumerable<InstanceSetting>>.Create(); stateMachine.<>4__this = this; stateMachine.token = token; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } private InstanceSettingsConfiguration CreateConfiguration(IList<InstanceSetting> instanceSettings) { bool isCloudInstance = ExtractIsCloudInstance(instanceSettings); uint? maxAllowedTargetDataRateMbpsAsync = ExtractMaxAllowedTargetDataRate(instanceSettings); return new InstanceSettingsConfiguration { IsCloudInstance = isCloudInstance, MaxAllowedTargetDataRateMbpsAsync = maxAllowedTargetDataRateMbpsAsync }; } private uint? ExtractMaxAllowedTargetDataRate(IEnumerable<InstanceSetting> instanceSettings) { InstanceSetting instanceSetting = ExtractInstanceSetting(instanceSettings, "Relativity.DataTransfer", "TapiMaxAllowedTargetDataRateMbps"); if (instanceSetting == null) { transferLog.LogWarning("Service did not return {InstanceSettingName} instance setting.", "TapiMaxAllowedTargetDataRateMbps"); return null; } if (!uint.TryParse(instanceSetting.Value, out uint result)) return null; return result; } private bool ExtractIsCloudInstance(IEnumerable<InstanceSetting> instanceSettings) { InstanceSetting instanceSetting = ExtractInstanceSetting(instanceSettings, "Relativity.Core", "CloudInstance"); if (instanceSetting != null) { bool result; bool flag = bool.TryParse(instanceSetting.Value, out result); if (!flag) transferLog.LogWarning("Service returned {InstanceSettingValue} value for {InstanceSettingName} instance setting which could not be parsed.", instanceSetting.Value, "CloudInstance"); return flag & result; } transferLog.LogWarning("Service did not return {InstanceSettingName} instance setting.", "CloudInstance"); return false; } private static InstanceSetting ExtractInstanceSetting(IEnumerable<InstanceSetting> instanceSettings, string section, string name) { return instanceSettings.FirstOrDefault(delegate(InstanceSetting x) { if (x.Section == section) return x.Name == name; return false; }); } } }