RestServiceBase
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Relativity.Transfer
{
public abstract class RestServiceBase
{
private readonly IInstanceSettingService instanceSettingService;
public RelativityConnectionInfo ConnectionInfo { get; }
public int MaxRetryAttempts { get; set; }
public double TimeoutSeconds { get; set; }
internal IRelativityServiceFactory ServiceFactory { get; }
protected IFileSystemService FileSystemService { get; }
protected ITransferLog Log { get; }
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);
WebApiInstanceSettingsRetriever instanceSettingRetriever = new WebApiInstanceSettingsRetriever(ServiceFactory, connectionInfo, log);
instanceSettingService = new InstanceSettingService(instanceSettingRetriever, connectionInfo, log);
}
protected async Task<bool> GetIsRelativityOneInstanceAsync(CancellationToken token)
{
return await instanceSettingService.GetCloudInstanceAsync(token).ConfigureAwait(false);
}
}
}