summaryrefslogtreecommitdiff
path: root/web/main.c
diff options
context:
space:
mode:
authorꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2022-09-14 19:00:54 +0800
committerꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2022-09-14 19:00:54 +0800
commit092ab36bc4c2ecdce80082e51386d01cc2d47305 (patch)
treea1fbf5999acab4a137bb25b4569a5befb3f256c9 /web/main.c
Minimum to get an app running
The config and HTML files are in this project, so the paths shouldn't be decided in libshopify.
Diffstat (limited to 'web/main.c')
-rw-r--r--web/main.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/web/main.c b/web/main.c
new file mode 100644
index 0000000..83a50aa
--- /dev/null
+++ b/web/main.c
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "shopify.h"
+
+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, &params)) {
+ free(params);
+ return MHD_NO;
+ }
+ struct MHD_Response *resp;
+ enum MHD_Result ret = shopify_respond(params, url, redir_url, APP_URL,
+ APP_ID, API_KEY, API_SECRET_KEY, APP_DIR, 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();
+ return 0;
+}