Add endpoint to download multidata directly
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
namespace ALttPRandomizer.Azure {
|
namespace ALttPRandomizer.Azure {
|
||||||
using global::Azure.Storage.Blobs;
|
using global::Azure.Storage.Blobs;
|
||||||
using global::Azure.Storage.Blobs.Models;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -64,6 +63,20 @@
|
|||||||
return data;
|
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) {
|
public async Task<DateTimeOffset> GetFileCreation(string filename) {
|
||||||
var blob = this.BlobClient.GetBlobClient(filename);
|
var blob = this.BlobClient.GetBlobClient(filename);
|
||||||
var blobProperties = await blob.GetPropertiesAsync();
|
var blobProperties = await blob.GetPropertiesAsync();
|
||||||
|
|||||||
@@ -72,6 +72,19 @@
|
|||||||
return ResolveResult(await this.RandomizeService.RetryMulti(id));
|
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) {
|
private ActionResult ResolveResult(IDictionary<string, object> result) {
|
||||||
if (result.TryGetValue("status", out var responseCode)) {
|
if (result.TryGetValue("status", out var responseCode)) {
|
||||||
if (responseCode is int code) {
|
if (responseCode is int code) {
|
||||||
|
|||||||
@@ -127,5 +127,9 @@
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<BinaryData?> GetMultidata(string multiId) {
|
||||||
|
return await this.AzureStorage.GetFile($"{multiId}/multidata");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user