Files

53 lines
1.7 KiB
C#

using Azure.Storage.Blobs;
// Lokales Hilfsprogramm für Azurite (UseDevelopmentStorage=true):
// <Dateipfad> lädt einen Import hoch; result <Blobname> liest dessen JSON-Prüfbericht.
if (args.Length == 2 && args[0] == "result")
{
// args[1] ist der beim Upload ausgegebene Blobname einschließlich der ursprünglichen Dateiendung.
var resultBlob = new BlobClient(
"UseDevelopmentStorage=true",
"results",
$"{args[1]}.json");
// Die Function verarbeitet Uploads asynchron; der Bericht kann daher noch fehlen.
if (!(await resultBlob.ExistsAsync()).Value)
{
Console.Error.WriteLine(
"Bericht noch nicht vorhanden. Prüfe das Function-Log und den Blobnamen.");
Environment.ExitCode = 1;
return;
}
var download = await resultBlob.DownloadContentAsync();
Console.WriteLine(download.Value.Content.ToString());
return;
}
if (args.Length != 1 || !File.Exists(args[0]))
{
Console.Error.WriteLine("Bitte eine vorhandene Datei angeben.");
Environment.ExitCode = 1;
return;
}
var container = new BlobContainerClient(
"UseDevelopmentStorage=true",
"imports");
// Beide Container werden auch bei einer frisch gestarteten lokalen Storage-Umgebung angelegt.
await container.CreateIfNotExistsAsync();
var resultsContainer = new BlobContainerClient(
"UseDevelopmentStorage=true",
"results");
await resultsContainer.CreateIfNotExistsAsync();
// Die zufällige Kennung verhindert Namenskollisionen bei wiederholtem Upload derselben Datei.
var blobName = $"{Guid.NewGuid():N}-{Path.GetFileName(args[0])}";
var blob = container.GetBlobClient(blobName);
await blob.UploadAsync(args[0]);
Console.WriteLine($"Hochgeladen: imports/{blobName}");