From bdbc750f7fec6f8680489b2342bc78d40e904503 Mon Sep 17 00:00:00 2001 From: Chewing_Bever Date: Thu, 3 Oct 2024 10:18:57 +0200 Subject: [PATCH] feat(landerctl): implement placeholder requests --- landerctl/include/landerctl.h | 2 ++ landerctl/src/args.c | 5 ++++- landerctl/src/commands.c | 27 +++++++++++++++++++++++++++ landerctl/src/commands_common.c | 3 +++ landerctl/src/main.c | 3 +++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/landerctl/include/landerctl.h b/landerctl/include/landerctl.h index 9ad264e..872a11e 100644 --- a/landerctl/include/landerctl.h +++ b/landerctl/include/landerctl.h @@ -34,6 +34,7 @@ typedef enum landerctl_mode { landerctl_mode_short, landerctl_mode_paste, landerctl_mode_file, + landerctl_mode_placeholder, } landerctl_mode; /** @@ -64,6 +65,7 @@ int landerctl_parse_args(landerctl_args *out, int argc, char **argv); int landerctl_cmd_short(landerctl_args *args); int landerctl_cmd_paste(landerctl_args *args); int landerctl_cmd_file(landerctl_args *args); +int landerctl_cmd_placeholder(landerctl_args *args); /** * Initialize a CURL object diff --git a/landerctl/src/args.c b/landerctl/src/args.c index 9538a27..6043247 100644 --- a/landerctl/src/args.c +++ b/landerctl/src/args.c @@ -55,7 +55,7 @@ int landerctl_parse_args(landerctl_args *args, int argc, char **argv) { const char *cfg_path = NULL; - while ((c = getopt(argc, argv, "SPFsvc:")) != -1) { + while ((c = getopt(argc, argv, "SPFHsvc:")) != -1) { switch (c) { case 'S': args->mode = landerctl_mode_short; @@ -66,6 +66,9 @@ int landerctl_parse_args(landerctl_args *args, int argc, char **argv) { case 'F': args->mode = landerctl_mode_file; break; + case 'H': + args->mode = landerctl_mode_placeholder; + break; case 's': args->secure = true; break; diff --git a/landerctl/src/commands.c b/landerctl/src/commands.c index 00b1f29..9ec3ebc 100644 --- a/landerctl/src/commands.c +++ b/landerctl/src/commands.c @@ -145,3 +145,30 @@ int landerctl_cmd_file(landerctl_args *args) { return res; } + +int landerctl_cmd_placeholder(landerctl_args *args) { + // TODO argument count check + int res; + landerctl_curl curl; + + if ((res = landerctl_curl_init(&curl))) { + return res; + } + + const char *key = args->args.arr[0]; + if ((res = landerctl_curl_set_common(&curl, args, key))) { + return res; + } + + curl_easy_setopt(curl.curl, CURLOPT_POST, 1L); + + res = landerctl_curl_perform(&curl); + + if (res == 0) { + landerctl_curl_inspect(&curl, args); + } + + landerctl_curl_cleanup(&curl); + + return res; +} diff --git a/landerctl/src/commands_common.c b/landerctl/src/commands_common.c index e735aa7..8cf4e5e 100644 --- a/landerctl/src/commands_common.c +++ b/landerctl/src/commands_common.c @@ -43,6 +43,9 @@ int landerctl_curl_set_common(landerctl_curl *curl, landerctl_args *args, case landerctl_mode_file: mode_char = 'f'; break; + case landerctl_mode_placeholder: + mode_char = 'h'; + break; // Shouldn't be able to happen default: return 10; diff --git a/landerctl/src/main.c b/landerctl/src/main.c index 7609fa9..db8155a 100644 --- a/landerctl/src/main.c +++ b/landerctl/src/main.c @@ -25,6 +25,9 @@ int main(int argc, char **argv) { case landerctl_mode_file: res = landerctl_cmd_file(&args); break; + case landerctl_mode_placeholder: + res = landerctl_cmd_placeholder(&args); + break; default: res = 7; break;