Files
monorepo/LCU.API.Internal.FileOperations/LCU.Api.Internal.FileOperations/Services/FileActionServices/WriteFileService.cs
T
2026-04-28 10:57:36 -05:00

79 lines
2.8 KiB
C#

using LCU.Api.Internal.FileOperations.Validations;
using LCU.Library.Internal.FileOperationsModels.Models;
using LCU.Library.Internal.LCUServiceFactory.Configurations;
using Newtonsoft.Json;
using System;
using System.IO;
namespace LCU.Api.Internal.FileOperations.Services.FileActionServices
{
public class WriteFileService : FileActionService, IFileActionService, IActionService<WriteFileRequest>
{
public WriteFileService(ServicesFactoryConfiguration servicesFactoryConfiguration)
: base(servicesFactoryConfiguration)
{
}
public RequestResponse ExecuteAction(QueueRequest queueRequest)
{
var requestResponse = new RequestResponse();
try
{
var fileRequest = JsonConvert.DeserializeObject<WriteFileRequest>(queueRequest.Request);
requestResponse = PerformRequest(fileRequest);
requestResponse.ReturnResponse = fileRequest;
return requestResponse;
}
catch (Exception exception)
{
return RequestResponseHelper.ExceptionUpdateRequestResponse(requestResponse,
queueRequest.FileOperationType,
exception.Message);
}
}
public RequestResponse PerformRequest(WriteFileRequest request)
{
return OperationService.PerformOperation(request, IsRequestValid, WriteFile);
}
private void WriteFile(WriteFileRequest request)
{
try
{
File.WriteAllText(request.FullFilePath, request.FileData);
}
catch (Exception exception)
{
throw new Exception($"Exception thrown while trying to ExecuteRequestAction. " +
$"Request: {JsonConvert.SerializeObject(request)}" +
$"ExceptionMessage: {exception.Message}");
}
}
public RequestResponse PreQueueValidation(WriteFileRequest originalRequest)
{
var requestResponse = new RequestResponse();
requestResponse = IsRequestValid(originalRequest, requestResponse);
return requestResponse;
}
public RequestResponse IsRequestValid(WriteFileRequest originalRequest, RequestResponse requestResponse)
{
requestResponse = FileValidation.ValidateDirectoryExists(originalRequest.DestinationPath, requestResponse);
if (!originalRequest.Overwrite)
{
requestResponse = FileValidation.ValidateFileNotExists(originalRequest.FullFilePath, requestResponse);
}
return requestResponse;
}
}
}