summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--main.c29
2 files changed, 26 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac
index d9745c3..a37935d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,6 +2,8 @@ AC_INIT([shopify-app-template-c], [0.0], [prabowo@darapsa.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
PKG_CHECK_MODULES([DEPS], [libmicrohttpd libgcrypt gnutls libpcre2-8 libcurl json-c])
+AC_CHECK_HEADERS([fcntl.h unistd.h])
+AC_FUNC_MALLOC
AC_TYPE_SIZE_T
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
diff --git a/main.c b/main.c
index 97be7a1..f4e9a40 100644
--- a/main.c
+++ b/main.c
@@ -1,21 +1,40 @@
-#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
#include <shopify.h>
+static char *html(const char *host)
+{
+ static const char *path_rel = "/frontend/index.html";
+ char path[strlen(APP_DIR) + strlen(path_rel) + 1];
+ sprintf(path, "%s%s", APP_DIR, path_rel);
+ int fd = open(path, O_RDONLY);
+ struct stat sb;
+ fstat(fd, &sb);
+ char template[sb.st_size + 1];
+ read(fd, path, sb.st_size);
+ close(fd);
+ const size_t html_len = sb.st_size - strlen("%s") * 4 + strlen(API_KEY)
+ + strlen(host) + strlen(APP_URL) * 2;
+ char *html = malloc(html_len + 1);
+ sprintf(html, template, API_KEY, host, APP_URL, APP_URL);
+ return html;
+}
+
int main(int argc, char *argv[])
{
const size_t app_dir_len = strlen(APP_DIR);
static const char *scopes_rel = "/shopify.app.toml";
char scopes[app_dir_len + strlen(scopes_rel) + 1];
sprintf(scopes, "%s%s", APP_DIR, scopes_rel);
- static const char *index_rel = "/frontend/index.html";
- char index[app_dir_len + strlen(index_rel) + 1];
- sprintf(index, "%s%s", APP_DIR, index_rel);
static const char *js_dir_rel = "/frontend/build";
char js_dir[app_dir_len + strlen(js_dir_rel) + 1];
sprintf(js_dir, "%s%s", APP_DIR, js_dir_rel);
shopify_app(API_KEY, API_SECRET_KEY, APP_URL, "/auth", APP_ID, scopes,
- index, js_dir, (struct shopify_api[]){
+ html, js_dir, (struct shopify_api[]){
{
"/products",
"GET",