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

HttpTransferClient

using System; using System.ComponentModel.Composition; using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; namespace Relativity.Transfer.Http { [TransferClientMetadata(Attributes = (TransferClientAttributes.Http | TransferClientAttributes.Slow), Client = WellKnownTransferClient.Http, Company = "kCura Corporation", Copyright = "Copyright © kCura Corp 2017", Description = "The document repository is accessed through the Relativity web service API over standard HTTP. This is the slowest of all methods, but is always available.", Id = "18F9E382-288C-4B6D-8AE8-FBA4D88CD841", DisplayName = "Web", Name = "Http", Version = "1.0")] [Export(typeof(ITransferClient))] internal sealed class HttpTransferClient : TransferClientBase { internal const int HttpMaxSupportedPathLength = 222; internal const int HttpTransferFileNameLength = 36; internal const string Description = "The document repository is accessed through the Relativity web service API over standard HTTP. This is the slowest of all methods, but is always available."; [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "This is a MEF only requirement.")] [ImportingConstructor] public HttpTransferClient([Import("RelativityConnectionInfo")] RelativityConnectionInfo connectionInfo, [Import("Logger")] ITransferLog log, [Import("ClientConfiguration")] ClientConfiguration configuration) : this(connectionInfo, new WorkspaceService(connectionInfo, log, configuration.MaxHttpRetryAttempts, configuration.HttpTimeoutSeconds), log, configuration) { } public HttpTransferClient(RelativityConnectionInfo connectionInfo, IWorkspaceService workspaceService, ITransferLog log, ClientConfiguration configuration) : base(connectionInfo, configuration, workspaceService, log, new Guid("18F9E382-288C-4B6D-8AE8-FBA4D88CD841"), WellKnownTransferClient.Http, "Http", "Web") { base.ClientLimits.MaxClientSupportedPathLength = 222; base.ClientLimits.TransferFileNameLength = 36; } protected override async Task<ITransferJob> OnCreateJobAsync(ITransferRequest request, CancellationToken token) { HttpClientConfiguration configuration = (Configuration as HttpClientConfiguration) ?? new HttpClientConfiguration(Configuration); ITransferJobService transferJobService = CreateTransferJobService(request, configuration, token); SoapFileTransferService fileTransferService = new SoapFileTransferService(ConnectionInfo, Workspace, configuration, FileSystemService, Log); HttpTransferCommand command = new HttpTransferCommand(Log, request, transferJobService, FileSystemService, configuration, fileTransferService); TransferEngineJob job = new TransferEngineJob(Log, request, transferJobService, configuration, CreateRelativityServiceFactory(), command); if (ClientLimits.MaxClientSupportedPathLength.HasValue) job.ClientMaxSupportedPathLength = ClientLimits.MaxClientSupportedPathLength.Value; if (ClientLimits.TransferFileNameLength.HasValue) job.ClientTransferFileNameLength = ClientLimits.TransferFileNameLength.Value; await job.StartAsync(token).ConfigureAwait(false); return job; } protected override IPathEnumerator OnCreateLocalPathEnumerator() { return new LocalPathEnumerator(base.FileSystemService, base.Log, base.ClientLimits); } protected override Task<ISupportCheckResult> OnSupportCheckAsync(CancellationToken token) { return Task.FromResult((ISupportCheckResult)new SupportCheckResult { IsSupported = true }); } protected override async Task<IConnectionCheckResult> OnExecConnectionCheckAsync(DiagnosticsContext context, CancellationToken token) { using (HttpConnectionService service = new HttpConnectionService(ConnectionInfo, Workspace, Configuration, FileSystemService, Log, context)) return await service.ExecConnectionCheckAsync(token).ConfigureAwait(false); } } }