From 0d4efb175c6538af3f750e3342295a9b0e8b5b43 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Wed, 27 May 2026 02:06:02 +1000 Subject: Initial commit --- Program.cs | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Program.cs (limited to 'Program.cs') diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..db48b83 --- /dev/null +++ b/Program.cs @@ -0,0 +1,71 @@ +using HyperBooru.ApiClient; +using System.CommandLine; + +namespace HyperBooru.CommandLine; + +public static class Program { + public static readonly Option UrlOption = new("--url") { + Description = "API base URL to connect to", + Required = true + }; + + public static readonly Option UsernameOption = new("--username") { + Description = "Username to connect with", + Required = true + }; + + public static readonly Option PasswordOption = new("--password") { + Description = "Password to connect with", + Required = true + }; + + public static readonly Option FileOption = new("--file") { + Description = "File to upload", + Required = true + }; + + public static readonly Option SkipCertCheckOption = new("--skip-cert-check") { + Description = "Don't validate server CA certificate" + }; + + public static readonly Option[] Options = [ + UrlOption, + UsernameOption, + PasswordOption, + FileOption, + SkipCertCheckOption + ]; + + public static void Main(string[] args) { + var rootCommand = new RootCommand(); + foreach(var o in Options) + rootCommand.Options.Add(o); + + var parseResult = rootCommand.Parse(args); + if(parseResult.Errors.Count != 0) { + foreach(var error in parseResult.Errors) + Console.Error.WriteLine(error.Message); + Environment.Exit(1); + } + + var session = new HBSession( + new Uri(parseResult.GetValue(UrlOption)!), + parseResult.GetValue(SkipCertCheckOption)); + + session.LoginAsync( + parseResult.GetValue(UsernameOption)!, + parseResult.GetValue(PasswordOption)!) + .GetAwaiter() + .GetResult(); + + try { + var media = session.Media.UploadAsync( + parseResult.GetValue(FileOption)!.FullName, null, false).GetAwaiter().GetResult(); + + Console.WriteLine(media.MediaId); + } catch(Exception e) { + Console.Error.WriteLine($"An error occurred: {e.Message}"); + Environment.Exit(1); + } + } +} -- cgit v1.3