lander/landerctl/include/landerctl.h

61 lines
1.4 KiB
C

#ifndef LANDERCTL
#define LANDERCTL
#include <stdbool.h>
#include <curl/curl.h>
typedef struct landerctl_cfg {
const char *api_key;
const char *server_url;
const char *ca_certs_bundle;
} landerctl_cfg;
typedef enum landerctl_cfg_err {
landerctl_cfg_err_ok = 0,
landerctl_cfg_err_not_found,
landerctl_cfg_err_invalid,
landerctl_cfg_err_incomplete,
} landerctl_cfg_err;
/**
* Try to parse the required config arguments from the config file
*
* @param out config to write values to. Existing values are overwritten
* @param path path to config file
*/
landerctl_cfg_err landerctl_cfg_parse(landerctl_cfg *out, const char *path);
typedef enum landerctl_mode {
landerctl_mode_none = 0,
landerctl_mode_short,
landerctl_mode_paste,
landerctl_mode_file,
} landerctl_mode;
typedef enum landerctl_err {
landerctl_err_ok = 0,
landerctl_err_not_found
} landerctl_err;
typedef struct landerctl_ctx {
landerctl_cfg cfg;
landerctl_mode mode;
bool secure;
bool verbose;
const char *arg;
const char *key;
CURL *curl;
struct curl_slist *headers;
FILE *data_file;
} landerctl_ctx;
const char *landerctl_err_msg(landerctl_err err);
void landerctl_set_common(landerctl_ctx *ctx);
landerctl_err landerctl_post_short(landerctl_ctx *ctx);
landerctl_err landerctl_post_paste(landerctl_ctx *ctx);
landerctl_err landerctl_post_file(landerctl_ctx *ctx);
#endif