From 603d4f0f85cac6942996c2c1f74672bd2c562e27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=EA=A6=AB=EA=A6=B6=EA=A6=8F=EA=A7=80=EA=A6=A6?= =?UTF-8?q?=EA=A6=BF=EA=A6=A7=EA=A6=AE=EA=A6=91=EA=A6=A9=EA=A6=AD=EA=A7=80?= Date: Sun, 18 Sep 2022 21:18:44 +0800 Subject: MHD access handler is moved to the lib --- web/main.c | 68 +++++++++++++++++++++++--------------------------------------- 1 file changed, 25 insertions(+), 43 deletions(-) diff --git a/web/main.c b/web/main.c index 9ec7463..e14ebe6 100644 --- a/web/main.c +++ b/web/main.c @@ -1,50 +1,32 @@ -#include -#include #include +#include #include -static enum MHD_Result handle_request(void *cls, struct MHD_Connection *conn, - const char *url, const char *method, const char *version, - const char *upload_data, size_t *upload_data_size, - void **con_cls) -{ - if (strcmp(method, "GET")) - return MHD_NO; - struct shopify_param *params = *con_cls; - if (!params) { - params = malloc(sizeof(struct shopify_param)); - *con_cls = params; - return MHD_YES; - } - static const char *redir_url = "/auth"; - if (!shopify_valid(conn, url, redir_url, API_SECRET_KEY, ¶ms)) { - free(params); - return MHD_NO; - } - const size_t dir_len = strlen(APP_DIR); - static const char *toml_rel_path = "/shopify.app.toml"; - char toml_abs_path[dir_len + strlen(toml_rel_path) + 1]; - sprintf(toml_abs_path, "%s%s", APP_DIR, toml_rel_path); - static const char *html_rel_path = "/web/frontend/index.html"; - char html_abs_path[dir_len + strlen(html_rel_path) + 1]; - sprintf(html_abs_path, "%s%s", APP_DIR, html_rel_path); - struct MHD_Response *resp; - enum MHD_Result ret = shopify_respond(params, url, redir_url, APP_URL, - APP_ID, API_KEY, API_SECRET_KEY, toml_abs_path, - html_abs_path, conn, &resp); - MHD_destroy_response(resp); - free(params); - return ret; -} - int main(int argc, char *argv[]) { - shopify_init(); - struct MHD_Daemon *daemon - = MHD_start_daemon(MHD_USE_INTERNAL_POLLING_THREAD, 3000, NULL, - NULL, &handle_request, NULL, MHD_OPTION_END); - getchar(); - MHD_stop_daemon(daemon); - shopify_cleanup(); + const size_t app_dir_len = strlen(APP_DIR); + static const char *scope_rel = "/shopify.app.toml"; + char scope[app_dir_len + strlen(scope_rel) + 1]; + sprintf(scope, "%s%s", APP_DIR, scope_rel); + static const char *index_rel = "/web/frontend/index.html"; + char index[app_dir_len + strlen(index_rel) + 1]; + sprintf(index, "%s%s", APP_DIR, index_rel); + shopify_app(API_KEY, API_SECRET_KEY, APP_URL, "/auth", APP_ID, scope, + index, (struct shopify_api[]){ + { + "/products", + "GET", + shopify_graphql, + "{"\ + " productCreate() {"\ + " product {"\ + " id"\ + " }"\ + " }"\ + "}" + }, + {} + } + ); return 0; } -- cgit v1.2.3