2025-08-18 03:00:08 -05:00
|
|
|
|
using LANCommander.SDK.Models;
|
2024-10-01 17:56:06 -05:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
using System.Threading.Tasks;
|
2025-10-06 20:29:34 -05:00
|
|
|
|
using LANCommander.SDK.Abstractions;
|
2025-09-22 00:29:51 -05:00
|
|
|
|
using LANCommander.SDK.Factories;
|
2024-10-01 17:56:06 -05:00
|
|
|
|
|
2024-10-04 23:37:49 -05:00
|
|
|
|
namespace LANCommander.SDK.Services
|
2024-10-01 17:56:06 -05:00
|
|
|
|
{
|
2025-09-24 20:58:23 -05:00
|
|
|
|
public class ServerClient(
|
2025-10-06 20:29:34 -05:00
|
|
|
|
ISettingsProvider settingsProvider,
|
2025-09-22 00:29:51 -05:00
|
|
|
|
ApiRequestFactory apiRequestFactory)
|
2024-10-01 17:56:06 -05:00
|
|
|
|
{
|
|
|
|
|
|
public delegate void OnArchiveEntryExtractionProgressHandler(object sender, ArchiveEntryExtractionProgressArgs e);
|
|
|
|
|
|
public event OnArchiveEntryExtractionProgressHandler OnArchiveEntryExtractionProgress;
|
|
|
|
|
|
|
|
|
|
|
|
public delegate void OnArchiveExtractionProgressHandler(long position, long length);
|
|
|
|
|
|
public event OnArchiveExtractionProgressHandler OnArchiveExtractionProgress;
|
|
|
|
|
|
|
|
|
|
|
|
public async Task ImportAsync(string archivePath)
|
|
|
|
|
|
{
|
|
|
|
|
|
using (var fs = new FileStream(archivePath, FileMode.Open, FileAccess.Read))
|
|
|
|
|
|
{
|
2025-09-22 00:29:51 -05:00
|
|
|
|
var objectKey = await apiRequestFactory
|
|
|
|
|
|
.Create()
|
|
|
|
|
|
.UseAuthenticationToken()
|
|
|
|
|
|
.UseVersioning()
|
2025-10-06 20:29:34 -05:00
|
|
|
|
.UploadInChunksAsync(settingsProvider.CurrentValue.Archives.UploadChunkSize, fs);
|
2024-10-01 17:56:06 -05:00
|
|
|
|
|
|
|
|
|
|
if (objectKey != Guid.Empty)
|
2025-09-22 00:29:51 -05:00
|
|
|
|
await apiRequestFactory
|
|
|
|
|
|
.Create()
|
|
|
|
|
|
.UseAuthenticationToken()
|
|
|
|
|
|
.UseVersioning()
|
|
|
|
|
|
.UseRoute($"/api/Servers/Import/{objectKey}")
|
2025-10-01 18:45:30 -05:00
|
|
|
|
.PostAsync();
|
2024-10-01 17:56:06 -05:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-22 00:29:51 -05:00
|
|
|
|
[Obsolete]
|
2024-10-01 17:56:06 -05:00
|
|
|
|
public async Task ExportAsync(string destinationPath, Guid serverId)
|
|
|
|
|
|
{
|
2025-09-22 00:29:51 -05:00
|
|
|
|
throw new NotImplementedException();
|
2024-10-01 17:56:06 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async Task UploadArchiveAsync(string archivePath, Guid serverId, string version, string changelog = "")
|
|
|
|
|
|
{
|
|
|
|
|
|
using (var fs = new FileStream(archivePath, FileMode.Open, FileAccess.Read))
|
|
|
|
|
|
{
|
2025-09-22 00:29:51 -05:00
|
|
|
|
var objectKey = await apiRequestFactory
|
|
|
|
|
|
.Create()
|
|
|
|
|
|
.UseAuthenticationToken()
|
|
|
|
|
|
.UseVersioning()
|
2025-10-06 20:29:34 -05:00
|
|
|
|
.UploadInChunksAsync(settingsProvider.CurrentValue.Archives.UploadChunkSize, fs);
|
2025-09-22 00:29:51 -05:00
|
|
|
|
|
2024-10-01 17:56:06 -05:00
|
|
|
|
if (objectKey != Guid.Empty)
|
2025-09-22 00:29:51 -05:00
|
|
|
|
await apiRequestFactory
|
|
|
|
|
|
.Create()
|
|
|
|
|
|
.UseAuthenticationToken()
|
|
|
|
|
|
.UseVersioning()
|
|
|
|
|
|
.UseRoute($"/api/Servers/UploadArchive")
|
|
|
|
|
|
.AddBody(new UploadArchiveRequest
|
|
|
|
|
|
{
|
|
|
|
|
|
Id = serverId,
|
|
|
|
|
|
ObjectKey = objectKey,
|
|
|
|
|
|
Version = version,
|
|
|
|
|
|
Changelog = changelog,
|
|
|
|
|
|
})
|
2025-10-01 18:45:30 -05:00
|
|
|
|
.PostAsync();
|
2024-10-01 17:56:06 -05:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|