From 8af91ea74b9fc999bb2dfd713dfff347c9809113 Mon Sep 17 00:00:00 2001 From: benbierens Date: Fri, 1 Nov 2024 09:51:20 +0100 Subject: [PATCH] working local --- DevconBoothImages/CodexWrapper.cs | 50 ++++++++++++++-------- DevconBoothImages/Configuration.cs | 7 +--- DevconBoothImages/MainWindow.xaml.cs | 62 +++++++++++++++------------- 3 files changed, 67 insertions(+), 52 deletions(-) diff --git a/DevconBoothImages/CodexWrapper.cs b/DevconBoothImages/CodexWrapper.cs index d59eb109..e5140afb 100644 --- a/DevconBoothImages/CodexWrapper.cs +++ b/DevconBoothImages/CodexWrapper.cs @@ -5,32 +5,46 @@ using Utils; namespace DevconBoothImages { + public class Codexes + { + public Codexes(CodexApi local, CodexApi testnet) + { + Local = local; + Testnet = testnet; + } + + public CodexApi Local { get; } + public CodexApi Testnet { get; } + } + public class CodexWrapper { - public async Task> GetCodexes() + public async Task GetCodexes() { var config = new Configuration(); - var result = new List(); + return new Codexes( + await GetCodex(config.CodexLocalEndpoint), + await GetCodex(config.CodexPublicEndpoint) + ); + } - foreach (var endpoint in config.CodexEndpoints) - { - var splitIndex = endpoint.LastIndexOf(':'); - var host = endpoint.Substring(0, splitIndex); - var port = Convert.ToInt32(endpoint.Substring(splitIndex + 1)); + private async Task GetCodex(string endpoint) + { + var splitIndex = endpoint.LastIndexOf(':'); + var host = endpoint.Substring(0, splitIndex); + var port = Convert.ToInt32(endpoint.Substring(splitIndex + 1)); - var address = new Address( - host: host, - port: port - ); + var address = new Address( + host: host, + port: port + ); - var client = new HttpClient(); - var codex = new CodexApi(client); - codex.BaseUrl = $"{address.Host}:{address.Port}/api/codex/v1"; + var client = new HttpClient(); + var codex = new CodexApi(client); + codex.BaseUrl = $"{address.Host}:{address.Port}/api/codex/v1"; - await CheckCodex(codex, endpoint); - } - - return result; + await CheckCodex(codex, endpoint); + return codex; } private async Task CheckCodex(CodexApi codex, string endpoint) diff --git a/DevconBoothImages/Configuration.cs b/DevconBoothImages/Configuration.cs index 53f76873..ea5f0bb2 100644 --- a/DevconBoothImages/Configuration.cs +++ b/DevconBoothImages/Configuration.cs @@ -2,11 +2,8 @@ { public class Configuration { - public string[] CodexEndpoints { get; } = - [ - "aaaa", - "bbbb" - ]; + public string CodexLocalEndpoint { get; } = "http://localhost:8080"; + public string CodexPublicEndpoint { get; } = ""; public string AuthUser { get; } = ""; public string AuthPw { get; } = ""; diff --git a/DevconBoothImages/MainWindow.xaml.cs b/DevconBoothImages/MainWindow.xaml.cs index b170b0fa..7dfd1dd6 100644 --- a/DevconBoothImages/MainWindow.xaml.cs +++ b/DevconBoothImages/MainWindow.xaml.cs @@ -1,4 +1,5 @@ using AutoClient; +using CodexOpenApi; using Logging; using System.IO; using System.Windows; @@ -11,7 +12,8 @@ namespace DevconBoothImages private readonly Configuration config = new Configuration(); private readonly CodexWrapper codexWrapper = new CodexWrapper(); private readonly ImageGenerator imageGenerator = new ImageGenerator(new NullLog()); - private string[] currentCids = Array.Empty(); + private string currentLocalCid = string.Empty; + private string currentPublicCid = string.Empty; public MainWindow() { @@ -62,52 +64,54 @@ namespace DevconBoothImages private async Task UploadToCodexes(string filename, string shortName) { - var result = new List(); var codexes = await codexWrapper.GetCodexes(); try { - foreach (var codex in codexes) - { - using (var fileStream = File.OpenRead(filename)) - { - var response = await codex.UploadAsync( - "application/image??", - "attachement filanem???", - fileStream); - - if (string.IsNullOrEmpty(response) || - response.ToLowerInvariant().Contains("unable to store block")) - { - MessageBox.Show("Unable to upload image. Response empty or error message."); - } - else - { - result.Add(response); - } - } - } + currentLocalCid = await UploadFile(filename, shortName, codexes.Local); + currentPublicCid = await UploadFile(filename, shortName, codexes.Testnet); } catch (Exception ex) { MessageBox.Show("Upload failed: " + ex); } - Log($"Generated {result.Count} CIDs"); - currentCids = result.ToArray(); + Log($"Generated CIDs"); + } + + private async Task UploadFile(string filename, string shortName, CodexApi codex) + { + using (var fileStream = File.OpenRead(filename)) + { + var response = await codex.UploadAsync( + "image/jpeg", + $"attachment; filename=\"{shortName}\"", + fileStream); + + if (string.IsNullOrEmpty(response) || + response.ToLowerInvariant().Contains("unable to store block")) + { + throw new Exception("Unable to upload image. Response empty or error message."); + } + return response; + } } private void InfoToClipboard() { Clipboard.Clear(); - if (!currentCids.Any()) + if (string.IsNullOrEmpty(currentLocalCid) || string.IsNullOrEmpty(currentPublicCid)) { Log("No CIDs were generated! Clipboard cleared."); return; } + var nl = Environment.NewLine; var msg = - ""; - - + $"** Codex@Devcon 💻 Raspberry Pi Challenge **{nl}" + + $"📢 A new image is available. Download it and bring it to the booth!{nl}" + + $"Public Testnet CID: `{currentPublicCid}`{nl}" + + $"Local Devcon network CID: `{currentLocalCid}`{nl}" + + $"Setup instructions: [Here](https://docs.codex.storage){nl}" + + $"Local Devcon network information: [Here](todo)"; Clipboard.SetText(msg); Log("CID info copied to clipboard. Paste it in Discord plz!"); @@ -118,4 +122,4 @@ namespace DevconBoothImages Txt.Text = v; } } -} \ No newline at end of file +}