using System; using Newtonsoft.Json; using Serilog; using LCU.Library.Internal.FileOperationsModels.Models; using LCU.Library.Internal.Exceptions; using System.Threading.Tasks; using LCU.Library.Internal.ApiResponse.Services; using LCU.Library.Internal.ApiResponse.Models; namespace LCU.Api.Internal.FileOperations.Services; public class DirectFileOperationsService : IDirectFileOperationsService { private readonly IFileOperationsService _fileOperationsService; public DirectFileOperationsService(IFileOperationsService fileOperationsService) { _fileOperationsService = fileOperationsService; } public async Task HandleDirectFileOperationsRequest(TRequest request, FileOperationType fileOperationType) where TRequest : ReturnResponse { try { var queueRequest = new QueueRequest { Request = JsonConvert.SerializeObject(request), FileOperationType = fileOperationType, Attempts = 0 }; var requestResponse = _fileOperationsService.PerformFileOperation(queueRequest); await QueueReturnResponse.QueueResponse(request, requestResponse.IsSuccessful, requestResponse.MessageStack); return requestResponse; } catch (Exception exception) { var message = "Failure to Handle Direct File Operations Request"; Log.Error(exception, message); throw new ServiceException($"{message}, Exception Message: {exception.Message}"); } } }