From a775ac24ac9b2b081300694085736d08f9ec8cf8 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: Wed, 14 Sep 2022 20:58:53 +0800 Subject: The toml & html file paths are handed to the app --- shopify.c | 17 +++++------------ shopify.h | 5 +++-- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/shopify.c b/shopify.c index 085921e..e774996 100644 --- a/shopify.c +++ b/shopify.c @@ -180,8 +180,9 @@ static inline int redirect(const char *host, const char *id, enum MHD_Result shopify_respond(struct shopify_param params[], const char *url, const char *redir_url, const char *app_url, const char *app_id, - const char *key, const char *secret_key, const char *dir, - struct MHD_Connection *conn, struct MHD_Response **resp) + const char *key, const char *secret_key, const char *toml_path, + const char *html_path, struct MHD_Connection *conn, + struct MHD_Response **resp) { int nparams = 0; while (params[nparams].key) @@ -205,7 +206,6 @@ enum MHD_Result shopify_respond(struct shopify_param params[], const char *url, qsort(sessions, nsessions, sizeof(struct session), sessioncmp); struct session *session = bsearch(&(struct session){ shop }, sessions, nsessions, sizeof(struct session), sessioncmp); - const size_t dir_len = strlen(dir); const size_t key_len = strlen(key); char frame[FRAME_LEN + shop_len + 1]; sprintf(frame, FRAME, shop); @@ -223,11 +223,7 @@ enum MHD_Result shopify_respond(struct shopify_param params[], const char *url, ret = redirect(decoded_host, app_id, resp, conn); } else if (session && session->token) { if (embedded) { - static const char *rel_path - = "/web/frontend/index.html"; - char abs_path[dir_len + strlen(rel_path) + 1]; - sprintf(abs_path, "%s%s", dir, rel_path); - int fd = open(abs_path, O_RDONLY); + int fd = open(toml_path, O_RDONLY); struct stat sb; fstat(fd, &sb); char index[sb.st_size + 1]; @@ -242,11 +238,8 @@ enum MHD_Result shopify_respond(struct shopify_param params[], const char *url, ret = redirect(decoded_host, app_id, resp, conn); } else { const size_t decoded_host_len = strlen(decoded_host); - static const char *rel_path = "/shopify.app.toml"; - char abs_path[dir_len + strlen(rel_path) + 1]; - sprintf(abs_path, "%s%s", dir, rel_path); char *scopes = NULL; - config_getscopes(abs_path, &scopes); + config_getscopes(html_path, &scopes); const size_t scopes_len = strlen(scopes); static const size_t nonce_len = 64; char nonce[nonce_len + 1]; diff --git a/shopify.h b/shopify.h index 6af62d1..247bc1c 100644 --- a/shopify.h +++ b/shopify.h @@ -19,8 +19,9 @@ bool shopify_valid(struct MHD_Connection *conn, const char *url, struct shopify_param *params[]); enum MHD_Result shopify_respond(struct shopify_param params[], const char *url, const char *redir_url, const char *app_url, const char *app_id, - const char *key, const char *secret_key, const char *dir, - struct MHD_Connection *conn, struct MHD_Response **resp); + const char *key, const char *secret_key, const char *toml_path, + const char *html_path, struct MHD_Connection *conn, + struct MHD_Response **resp); void shopify_cleanup(); #ifdef __cplusplus -- cgit v1.2.3