Add endpoint to download multidata directly

This commit is contained in:
2026-04-17 06:18:48 -05:00
parent a13dc37dac
commit 807d56d3c0
3 changed files with 31 additions and 1 deletions

View File

@@ -1,6 +1,5 @@
namespace ALttPRandomizer.Azure {
using global::Azure.Storage.Blobs;
using global::Azure.Storage.Blobs.Models;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
@@ -64,6 +63,20 @@
return data;
}
public async Task<BinaryData?> GetFile(string filename) {
var blob = this.BlobClient.GetBlobClient(filename);
var exists = await blob.ExistsAsync();
if (!exists.HasValue || !exists.Value) {
return null;
}
var result = await blob.DownloadContentAsync();
if (result.HasValue) {
return result.Value.Content;
} else {
return null;
}
}
public async Task<DateTimeOffset> GetFileCreation(string filename) {
var blob = this.BlobClient.GetBlobClient(filename);
var blobProperties = await blob.GetPropertiesAsync();

View File

@@ -72,6 +72,19 @@
return ResolveResult(await this.RandomizeService.RetryMulti(id));
}
[Route("/multidata/{id}")]
[HttpGet]
public async Task<ActionResult> GetMultidata(string id) {
var multidata = await this.SeedService.GetMultidata(id);
if (multidata == null) {
return NotFound("multidata not found");
} else {
return new FileContentResult(multidata.ToArray(), "application/octet-stream") {
FileDownloadName = $"{id}_multidata",
};
}
}
private ActionResult ResolveResult(IDictionary<string, object> result) {
if (result.TryGetValue("status", out var responseCode)) {
if (responseCode is int code) {

View File

@@ -127,5 +127,9 @@
return result;
}
public async Task<BinaryData?> GetMultidata(string multiId) {
return await this.AzureStorage.GetFile($"{multiId}/multidata");
}
}
}