diff options
Diffstat (limited to 'Program.cs')
| -rw-r--r-- | Program.cs | 71 |
1 files changed, 71 insertions, 0 deletions
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<string> UrlOption = new("--url") { + Description = "API base URL to connect to", + Required = true + }; + + public static readonly Option<string> UsernameOption = new("--username") { + Description = "Username to connect with", + Required = true + }; + + public static readonly Option<string> PasswordOption = new("--password") { + Description = "Password to connect with", + Required = true + }; + + public static readonly Option<FileInfo> FileOption = new("--file") { + Description = "File to upload", + Required = true + }; + + public static readonly Option<bool> 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); + } + } +} |
