diff options
| author | 2024-11-12 12:12:31 -0500 | |
|---|---|---|
| committer | 2024-11-12 12:12:31 -0500 | |
| commit | 29fa4f8d667d543595e652e7402d395d507ba464 (patch) | |
| tree | eaa2adf9f687c499b31eeddef42493c4bfda9b1c /src/fruits/cmc | |
| parent | b4bcfa1da5c1be9f7999d4d4df4e8d1b73c3061a (diff) | |
| download | camu-29fa4f8d667d543595e652e7402d395d507ba464.tar.gz camu-29fa4f8d667d543595e652e7402d395d507ba464.tar.bz2 camu-29fa4f8d667d543595e652e7402d395d507ba464.zip | |
Add user volume, simple client add cli
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/fruits/cmc')
| -rw-r--r-- | src/fruits/cmc/cmc.c | 49 |
1 files changed, 44 insertions, 5 deletions
diff --git a/src/fruits/cmc/cmc.c b/src/fruits/cmc/cmc.c index ad7c75e..d39d639 100644 --- a/src/fruits/cmc/cmc.c +++ b/src/fruits/cmc/cmc.c @@ -8,8 +8,14 @@ #include "cmc.h" +enum { + CLI_ADD = 0 +}; + struct cmc { struct aki_event_loop loop; + u8 command; + array(str) args; struct camu_client client; struct camu_post_cache cache; array(struct cmc_search *) searches; @@ -29,7 +35,16 @@ static void client_callback(void *userdata, u8 op, void *opaque) struct cmc *c = (struct cmc *)userdata; switch (op) { case CAMU_CLIENT_LOGIN: { - camu_client_create_search(&c->client, al_str_c("youtube"), al_str_c("")); + switch (c->command) { + case CLI_ADD: { + str *arg; + al_array_foreach_ptr(c->args, i, arg) { + camu_client_add_from_path(&c->client, al_str_c("default"), arg); + } + camu_client_disconnect(&c->client); + break; + } + } break; } case CAMU_CLIENT_SEARCH_CREATED: { @@ -62,7 +77,7 @@ static void client_callback(void *userdata, u8 op, void *opaque) al_array_push(page->list, s); } al_array_push(search->pages, page); - camu_client_add(&c->client, al_str_c("default"), &al_array_at(page->list, 0), 0); + camu_client_add_from_post(&c->client, al_str_c("default"), &al_array_at(page->list, 0), 0); break; } } @@ -71,21 +86,45 @@ static void client_callback(void *userdata, u8 op, void *opaque) static struct cmc c = { 0 }; #ifndef _WIN32 +static bool parse_cmd(s32 argc, char *argv[]) +#else +static bool parse_cmd(s32 argc, wchar_t **argv) +#endif +{ + if (argc < 2) return false; + if (al_str_eq(al_str_cr(argv[1]), al_str_c("add"))) { + if (argc < 3) return false; + c.command = CLI_ADD; + char path[PATH_MAX]; + str arg; + for (s32 i = 2; i < argc; i++) { + if (realpath(argv[i], path)) { + al_str_clone(&arg, al_str_cr(path)); + al_array_push(c.args, arg); + } + } + } + return true; +} + + +#ifndef _WIN32 s32 main(s32 argc, char *argv[]) #else s32 wmain(s32 argc, wchar_t **argv) #endif { - (void)argc; - (void)argv; if (!aki_common_init()) return EXIT_FAILURE; aki_event_loop_init(&c.loop); - camu_post_cache_init(&c.cache); + al_array_init(c.args); + camu_post_cache_init(&c.cache); al_array_init(c.searches); + if (!parse_cmd(argc, argv)) return EXIT_FAILURE; + c.client.callback = client_callback; c.client.userdata = &c; if (!camu_client_login(&c.client, &c.loop, CAMU_LOCAL_TYPE, CAMU_LOCAL_ADDR, CAMU_PORT, al_str_c("andrew"))) { |