<PackageReference Include="Relativity.Transfer.Client" Version="7.2.7" />

WebApiInstanceSettingsRetriever

using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; using System; using System.CodeDom.Compiler; using System.ComponentModel; using System.Runtime.Serialization; using System.CodeDom.Compiler; using System.ComponentModel; namespace Relativity.Transfer { [GeneratedCode("wsdl", "4.6.1055.0")] public delegate void RemoveFillCompletedEventHandler (object sender, AsyncCompletedEventArgs e); } namespace Relativity.Transfer { [Serializable] public class RelativityNotSupportedException : Exception { public RelativityNotSupportedException() { } public RelativityNotSupportedException(string message) : base(message) { } public RelativityNotSupportedException(string message, Exception innerException) : base(message, innerException) { } protected RelativityNotSupportedException(SerializationInfo info, StreamingContext context) : base(info, context) { } public override void GetObjectData(SerializationInfo info, StreamingContext context) { if (info == null) throw new ArgumentNullException("info"); base.GetObjectData(info, context); } } } namespace Relativity.Transfer { internal class WebApiInstanceSettingsRetriever : IInstanceSettingRetriever { private readonly IRelativityServiceFactory serviceFactory; private readonly RelativityConnectionInfo connectionInfo; private readonly ITransferLog transferLog; public WebApiInstanceSettingsRetriever(IRelativityServiceFactory serviceFactory, RelativityConnectionInfo connectionInfo, ITransferLog transferLog) { this.transferLog = transferLog; this.connectionInfo = connectionInfo; this.serviceFactory = serviceFactory; } public async Task<IEnumerable<InstanceSetting>> GetAllAsync(CancellationToken token) { using (MemoryCacheRepository cacheRepository = new MemoryCacheRepository(TransferCache.Default)) { WebApiInstanceSettingsRetriever webApiInstanceSettingsRetriever = default(WebApiInstanceSettingsRetriever); string key = CoreMemoryCacheKeys.CreateInstanceSettingsKey(webApiInstanceSettingsRetriever.connectionInfo.Host); IEnumerable<InstanceSetting> instanceSettings2 = cacheRepository.SelectByKey<List<InstanceSetting>>(key); if (instanceSettings2 != null) return instanceSettings2; CancellationToken token2 = default(CancellationToken); instanceSettings2 = await webApiInstanceSettingsRetriever.GetAllFromRelativityAsync(token2).ConfigureAwait(false); cacheRepository.Upsert(key, instanceSettings2); return instanceSettings2; } } private async Task<IEnumerable<InstanceSetting>> GetAllFromRelativityAsync(CancellationToken token) { List<InstanceSetting> instanceSettings = new List<InstanceSetting>(); ClientConfiguration configuration = new ClientConfiguration(); using (IUserManagerService userManagerService = serviceFactory.CreateUserManagerService(configuration)) using (IRelativityManagerService relativityManagerService = serviceFactory.CreateRelativityManagerService(userManagerService, configuration)) { transferLog.LogDebug("Preparing to retrieve instance settings from the '{Host}' Relativity server...", connectionInfo.Host); userManagerService.Login(); instanceSettings.AddRange(await relativityManagerService.GetInstanceSettingsAsync(token).ConfigureAwait(false)); transferLog.LogDebug("Successfully retrieved {Count} instance settings from the '{Host}' Relativity server.", instanceSettings.Count, connectionInfo.Host); } return instanceSettings; } public async Task<InstanceSetting> GetSingleAsync(string section, string name, CancellationToken token) { return Enumerable.FirstOrDefault(await GetAllAsync(token).ConfigureAwait(false), (InstanceSetting x) => string.Compare(x.Section, section, StringComparison.OrdinalIgnoreCase) == 0 && string.Compare(x.Name, name, StringComparison.OrdinalIgnoreCase) == 0); } } }