Adding
This commit is contained in:
@@ -0,0 +1,181 @@
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using Serilog;
|
||||
using MassTransit;
|
||||
using LCU.Api.Internal.FTP.Configuration;
|
||||
using LCU.Api.Internal.FTPLib.Models.Enums;
|
||||
using LCU.Api.Internal.FTPLib.Models;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Library.Internal.LcuMassTransitModels;
|
||||
namespace LCU.Api.Internal.FTP.Services;
|
||||
|
||||
public class QueueFtpService : IQueueFtpService
|
||||
{
|
||||
private readonly IQueueSshFtpService _queueSshFtpService;
|
||||
private readonly ISendEndpoint _sendEndpoint;
|
||||
|
||||
public QueueFtpService(IQueueSshFtpService queueSshFtpService,
|
||||
IBusControl busControl,
|
||||
ReceiveEndpointConfiguration receiveEndpointsConfiguration)
|
||||
{
|
||||
_queueSshFtpService = queueSshFtpService;
|
||||
_sendEndpoint = busControl.GetSendEndpoint(receiveEndpointsConfiguration.ReceiveEndpointUri).Result;
|
||||
}
|
||||
|
||||
[Obsolete("01/04/2022 - After the SftpController endpoints that call this method are no longer in use this can be removed.")]
|
||||
public void QueueSftp(SftpRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
//If it has localfiledata then we need to use sshftp to accommodate old endpoints.
|
||||
if (request.LocalFileData != null && request.LocalFileData.Length > 0)
|
||||
{
|
||||
var sshFtpRequest = new SshFtpRequest()
|
||||
{
|
||||
Protocol = request.Protocol,
|
||||
HostName = request.HostName,
|
||||
PortNumber = request.PortNumber,
|
||||
UserName = request.UserName,
|
||||
Password = request.Password,
|
||||
RemoteFilePath = request.RemoteFilePath,
|
||||
LocalFileData = request.LocalFileData
|
||||
};
|
||||
|
||||
_queueSshFtpService.QueueSshFtpRequest(sshFtpRequest);
|
||||
return;
|
||||
}
|
||||
|
||||
var winScpUploadFileRequest = new SftpUploadFileRequest()
|
||||
{
|
||||
SessionInformation = new SessionInformation()
|
||||
{
|
||||
Protocol = request.Protocol,
|
||||
HostName = request.HostName,
|
||||
PortNumber = request.PortNumber,
|
||||
UserName = request.UserName,
|
||||
Password = request.Password,
|
||||
SshHostKeyFingerprint = request.SshHostKeyFingerprint
|
||||
},
|
||||
LocalFilePath = request.LocalFilePath,
|
||||
LocalFileName = null,
|
||||
RemoteFilePath = request.RemoteFilePath,
|
||||
DynamicNameSetting = null,
|
||||
ResponseItems = request.ResponseItems
|
||||
};
|
||||
|
||||
var queueRequest = new QueueRequest()
|
||||
{
|
||||
Request = JsonConvert.SerializeObject(winScpUploadFileRequest),
|
||||
FtpType = FtpType.WinScpSftpUpload
|
||||
};
|
||||
|
||||
_sendEndpoint.Send(queueRequest);
|
||||
Log.Debug($"Queued The Following Sftp Request {request}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"Failed to Queue Sftp Request. Request: {request}");
|
||||
throw new ServiceException($"Failed to Queue Sftp Request. Request: {request}");
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("01/04/2022 - After the SftpController endpoints that call this method are no longer in use this can be removed.")]
|
||||
public void QueueSftpDynamicFileRequest(SftpDynamicFileRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var winScpUploadFileRequest = new SftpUploadFileRequest()
|
||||
{
|
||||
SessionInformation = new SessionInformation()
|
||||
{
|
||||
Protocol = request.Protocol,
|
||||
HostName = request.HostName,
|
||||
PortNumber = request.PortNumber,
|
||||
UserName = request.UserName,
|
||||
Password = request.Password,
|
||||
SshHostKeyFingerprint = request.SshHostKeyFingerprint
|
||||
},
|
||||
LocalFilePath = request.LocalFilePath,
|
||||
LocalFileName = request.LocalFileName,
|
||||
RemoteFilePath = request.RemoteFilePath,
|
||||
DynamicNameSetting = request.DynamicNameSetting,
|
||||
ResponseItems = request.ResponseItems
|
||||
};
|
||||
|
||||
var queueRequest = new QueueRequest()
|
||||
{
|
||||
Request = JsonConvert.SerializeObject(winScpUploadFileRequest),
|
||||
FtpType = FtpType.WinScpSftpUpload
|
||||
};
|
||||
|
||||
_sendEndpoint.Send(queueRequest);
|
||||
Log.Debug($"Queued The Following Sftp Request to host {request.HostName}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"Failed to Queue Sftp dynamic file request. " +
|
||||
$"Host: {request.HostName}");
|
||||
throw new ServiceException($"Failed to Queue Sftp dynamic file request. " +
|
||||
$"Host: {request.HostName}");
|
||||
}
|
||||
}
|
||||
|
||||
public void QueueSftpUploadRequest(SftpUploadFileRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var queueRequest = new QueueRequest()
|
||||
{
|
||||
Request = JsonConvert.SerializeObject(request),
|
||||
FtpType = FtpType.WinScpSftpUpload
|
||||
};
|
||||
|
||||
_sendEndpoint.Send(queueRequest);
|
||||
Log.Debug($"Queued sftp upload request to " +
|
||||
$"host {request.SessionInformation.HostName}");
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"Failed to Queue Sftp Upload Request. " +
|
||||
$"Host: {request.SessionInformation.HostName}");
|
||||
throw new ServiceException($"Failed to Queue Sftp Upload Request. " +
|
||||
$"Host: {request.SessionInformation.HostName}");
|
||||
}
|
||||
}
|
||||
|
||||
public void QueueSftpDownloadRequest(SftpDownloadFileRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var queueRequest = new QueueRequest()
|
||||
{
|
||||
Request = JsonConvert.SerializeObject(request),
|
||||
FtpType = FtpType.WinScpSftpDownload
|
||||
};
|
||||
|
||||
_sendEndpoint.Send(queueRequest);
|
||||
Log.Debug($"Queued sftp download request from " +
|
||||
$"host {request.SessionInformation.HostName}");
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"Failed to Queue Sftp Download Request. " +
|
||||
$"Host: {request.SessionInformation.HostName}");
|
||||
throw new ServiceException($"Failed to Queue Sftp Download Request. " +
|
||||
$"Host: {request.SessionInformation.HostName}");
|
||||
}
|
||||
}
|
||||
|
||||
public void QueueFtpRequest(QueueRequest queueRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
_sendEndpoint.Send(queueRequest);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"Failed to Queue ftp request. FtpType: {queueRequest.FtpType}");
|
||||
throw new ServiceException($"Failed to Queue ftp request. FtpType: {queueRequest.FtpType}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user