kreta/Kreta.BusinessLogic/Helpers/FileUpload/FileServiceHelper.cs
2024-03-13 00:33:46 +01:00

100 lines
4.4 KiB
C#

using System;
using Kreta.BusinessLogic.Caching;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Client.FileService;
using Kreta.Client.FileService.Request;
using Kreta.Client.FileService.Response;
namespace Kreta.BusinessLogic.Helpers
{
internal class FileServiceHelper : IFileServiceHelper
{
private readonly IFileServiceClient fileServiceClient;
private readonly IFileServiceClientV3 fileServiceClientV3;
private readonly ITokenServiceHelper tokenServiceHelper;
private FileServiceCache FileServiceCache => KretaServer.KretaServer.Instance.CacheManager.AquireCache<FileServiceCache>();
public FileServiceHelper(IFileServiceClient fileServiceClient, IFileServiceClientV3 fileServiceClientV3, ITokenServiceHelper tokenServiceHelper)
{
this.fileServiceClient = fileServiceClient ?? throw new ArgumentNullException(nameof(fileServiceClient));
this.fileServiceClientV3 = fileServiceClientV3 ?? throw new ArgumentNullException(nameof(fileServiceClientV3));
this.tokenServiceHelper = tokenServiceHelper ?? throw new ArgumentNullException(nameof(tokenServiceHelper));
}
public FileUploadResponse Upload(IFileUploadRequest fileUploadRequest)
{
var response = fileServiceClientV3.Upload(FileServiceCache.GetPrivateToken(tokenServiceHelper), fileUploadRequest);
if (response.TryAgain)
{
return fileServiceClientV3.Upload(FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileUploadRequest);
}
return response;
}
public FileFinalizeResponseV3 Veglegesites(FileFinalizeRequestV3 fileVeglegesitesRequest)
{
var response = fileServiceClientV3.Veglegesites(FileServiceCache.GetPrivateToken(tokenServiceHelper), fileVeglegesitesRequest);
if (response.TryAgain)
{
response = fileServiceClientV3.Veglegesites(FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileVeglegesitesRequest);
}
return response;
}
public string GetUrl(string intezmenyAzonosito, GetUrlRequest fileDownloadRequest)
{
var response = fileServiceClient.GetUrl(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper), fileDownloadRequest);
if (response.TryAgain)
{
response = fileServiceClient.GetUrl(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileDownloadRequest);
}
return response.Url;
}
public GetFileResponse GetFile(string intezmenyAzonosito, GetUrlRequest fileDownloadRequest)
{
fileDownloadRequest.Utvonal = CalculateFajlUtvonalKorabbiKompatibilitasMiatt(intezmenyAzonosito, fileDownloadRequest.Utvonal);
var response = fileServiceClientV3.GetFile(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper), fileDownloadRequest);
if (response.TryAgain)
{
response = fileServiceClientV3.GetFile(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileDownloadRequest);
}
return response;
}
public bool Delete(string intezmenyAzonosito, FileDeleteRequest fileDeleteRequest)
{
fileDeleteRequest.Utvonal = CalculateFajlUtvonalKorabbiKompatibilitasMiatt(intezmenyAzonosito, fileDeleteRequest.Utvonal);
var response = fileServiceClientV3.Delete(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper), fileDeleteRequest);
if (response.TryAgain)
{
response = fileServiceClientV3.Delete(intezmenyAzonosito, FileServiceCache.GetPrivateToken(tokenServiceHelper, forceUpdate: true), fileDeleteRequest);
}
return response.IsSuccess;
}
private string CalculateFajlUtvonalKorabbiKompatibilitasMiatt(string intezmenyAzonosito, string utvonal)
{
bool regiUtvonalFormatum = utvonal.Length == 8;
if (regiUtvonalFormatum)
{
var fajlUtvonalEv = utvonal.Substring(0, 4);
var fajlUtvonalHonapNap = utvonal.Substring(4, 4);
return $"HaziFeladatok/{intezmenyAzonosito}/{fajlUtvonalEv}/{fajlUtvonalHonapNap}";
}
return utvonal;
}
}
}