UploadTapiBridge2
Represents a class object to provide a upload bridge from the Transfer API to existing import/export components. This class cannot be inherited, backwards compatibility isn't guaranteed, and should never be consumed by API users.
using Relativity.DataExchange.Io;
using Relativity.DataExchange.Resources;
using Relativity.DataExchange.Service;
using Relativity.Logging;
using Relativity.Transfer;
using Relativity.Transfer.Aspera;
using System;
using System.Threading;
namespace Relativity.DataExchange.Transfer
{
public sealed class UploadTapiBridge2 : TapiBridgeBase2
{
private readonly FileSharePathManager pathManager;
private readonly UploadTapiBridgeParameters2 parameters;
public string TargetFolderName => pathManager.CurrentTargetFolderName;
public UploadTapiBridge2(UploadTapiBridgeParameters2 parameters, ILog logger, IAuthenticationTokenProvider authTokenProvider, CancellationToken token, bool useLegacyWebApi, IRelativityManagerServiceFactory relativityManagerServiceFactory)
: this(new TapiObjectService(authTokenProvider, relativityManagerServiceFactory, useLegacyWebApi), parameters, logger, useLegacyWebApi, token)
{
}
public UploadTapiBridge2(ITapiObjectService factory, UploadTapiBridgeParameters2 parameters, ILog logger, bool useLegacyWebApi, CancellationToken token)
: this(factory, parameters, null, logger, useLegacyWebApi, token)
{
}
public UploadTapiBridge2(ITapiObjectService factory, UploadTapiBridgeParameters2 parameters, TransferContext context, ILog logger, bool useLegacyWebApi, CancellationToken token)
: base(factory, parameters, 1, context, logger, useLegacyWebApi, token)
{
if (parameters == null)
throw new ArgumentNullException("parameters");
this.parameters = parameters;
pathManager = new FileSharePathManager(parameters.MaxFilesPerFolder);
}
public string AddPath(string sourceFile, string targetFileName, int order)
{
if (string.IsNullOrEmpty(sourceFile))
throw new ArgumentNullException("sourceFile");
TransferPath val = new TransferPath();
val.set_SourcePath(sourceFile);
val.set_TargetPath(parameters.SortIntoVolumes ? pathManager.GetNextTargetPath(base.TargetPath) : base.TargetPath);
val.set_TargetFileName(targetFileName);
val.set_Order(order);
TransferPath path = val;
return AddPath(path);
}
public override void LogTransferParameters()
{
base.LogTransferParameters();
base.Logger.LogInformation("BCP file transfer: {BcpFileTransfer}", new object[1] {
parameters.BcpFileTransfer
});
base.Logger.LogInformation("Aspera BCP root folder: {AsperaBcpRootFolder}", new object[1] {
parameters.AsperaBcpRootFolder
});
base.Logger.LogInformation("Sort into volume: {SortIntoVolumes}", new object[1] {
parameters.SortIntoVolumes
});
base.Logger.LogInformation("Max file per folder: {MaxFilesPerFolder}", new object[1] {
parameters.MaxFilesPerFolder
});
}
protected override string TransferFileFatalMessage()
{
return Strings.TransferFileUploadFatalMessage;
}
protected override TransferRequest CreateTransferRequestForJob(TransferContext context)
{
return TransferRequest.ForUploadJob(base.TargetPath, context);
}
protected override void SetupRemotePathResolvers(ITransferRequest request)
{
if (request == null)
throw new ArgumentNullException("request");
if (base.ClientId.ToString().ToUpperInvariant() == "812A70A5-7311-46CC-BE53-07BB8C5F9A7D") {
IRemotePathResolver val = (!parameters.BcpFileTransfer) ? ((object)new AsperaUncPathResolver(parameters.FileShare, parameters.AsperaDocRootLevels, base.TransferLog)) : ((object)new AsperaUncBcpPathResolver(parameters.FileShare, parameters.AsperaBcpRootFolder, base.TransferLog));
request.set_TargetPathResolver(val);
}
}
protected override ClientConfiguration CreateClientConfiguration()
{
ClientConfiguration obj = base.CreateClientConfiguration();
obj.set_FileTransferHint(parameters.BcpFileTransfer ? 1 : 0);
return obj;
}
}
}