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

RestServiceBase

public abstract class RestServiceBase
using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace Relativity.Transfer { public abstract class RestServiceBase { public RelativityConnectionInfo ConnectionInfo { get; } public int MaxRetryAttempts { get; set; } public double TimeoutSeconds { get; set; } internal IServiceFactory ServiceFactory { get; } protected IFileSystemService FileSystemService { get; } protected ITransferLog Log { get; } [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification = "This object is properly disposed.")] protected RestServiceBase(RelativityConnectionInfo connectionInfo) : this(connectionInfo, new NullTransferLog()) { } protected RestServiceBase(RelativityConnectionInfo connectionInfo, ITransferLog log) : this(connectionInfo, log, 5, 300) { } protected RestServiceBase(RelativityConnectionInfo connectionInfo, ITransferLog log, int maxRetryAttempts, double timeoutSeconds) { if (connectionInfo == null) throw new ArgumentNullException("connectionInfo"); if (log == null) throw new ArgumentNullException("log"); ConnectionInfo = connectionInfo; FileSystemService = ServiceObjectLocator.GetService<IFileSystemService>(); Log = log; MaxRetryAttempts = maxRetryAttempts; TimeoutSeconds = timeoutSeconds; ServiceFactory = new ServiceFactory(connectionInfo, Log, maxRetryAttempts, timeoutSeconds); } protected async Task<bool> GetIsRelativityOneInstanceAsync(CancellationToken token) { using (MemoryCacheRepository cacheRepository = new MemoryCacheRepository(TransferCache.Default)) { string key = CoreMemoryCacheKeys.CreateCloudInstanceKey(ConnectionInfo.Host); List<InstanceSetting> instanceSettings = cacheRepository.SelectByKey<List<InstanceSetting>>(key); if (instanceSettings == null) { instanceSettings = new List<InstanceSetting>(); ClientConfiguration configuration = new ClientConfiguration(); using (IUserManagerService userManagerService = ServiceFactory.CreateUserManagerService(configuration)) using (IRelativityManagerService relativityManagerService = ServiceFactory.CreateRelativityManagerService(userManagerService, configuration)) { Log.LogDebug("Preparing to retrieve instance settings from the '{Host}' Relativity server...", ConnectionInfo.Host); userManagerService.Login(); instanceSettings.AddRange(await relativityManagerService.GetInstanceSettingsAsync(token).ConfigureAwait(false)); Log.LogDebug("Successfully retrieved {Count} instance setttings from the '{Host}' Relativity server.", instanceSettings.Count, ConnectionInfo.Host); } } cacheRepository.Upsert(key, instanceSettings); InstanceSetting instanceSetting = instanceSettings.FirstOrDefault(delegate(InstanceSetting x) { if (string.Compare(x.Section, "Relativity.Core", StringComparison.OrdinalIgnoreCase) == 0) return string.Compare(x.Name, "CloudInstance", StringComparison.OrdinalIgnoreCase) == 0; return false; }); if (instanceSetting == null) return false; bool result; return bool.TryParse(instanceSetting.Value, out result) & result; } } } }