diff options
Diffstat (limited to 'request.h')
-rw-r--r-- | request.h | 44 |
1 files changed, 6 insertions, 38 deletions
@@ -1,3 +1,5 @@ +#include <stdlib.h> +#include <string.h> #include <curl/curl.h> #define TOKEN_URL "https://%s/oauth/access_token" @@ -9,20 +11,12 @@ #define TOKEN_HEADER "X-Shopify-Access-Token: %s" #define TOKEN_HEADER_LEN strlen(TOKEN_HEADER) - strlen("%s") -#define GRAPHQL_URL "https://%s/admin/api/2022-07/graphql.json" -#define GRAPHQL_URL_LEN strlen(GRAPHQL_URL) - strlen("%s") - -static inline void request_init() -{ - curl_global_init(CURL_GLOBAL_DEFAULT); -} - -static size_t append(char *data, size_t size, size_t nmemb, char **json) +static size_t append(char *data, size_t size, size_t nmemb, char **res) { size_t realsize = size * nmemb; - size_t json_len = *json ? strlen(*json) : 0; - *json = realloc(*json, json_len + realsize + 1); - strlcpy(&(*json)[json_len], data, realsize + 1); + size_t res_len = *res ? strlen(*res) : 0; + *res = realloc(*res, res_len + realsize + 1); + strlcpy(&(*res)[res_len], data, realsize + 1); return realsize; } @@ -42,29 +36,3 @@ static inline void request_gettoken(const char *host, const char *key, curl_easy_perform(curl); curl_easy_cleanup(curl); } - -static inline void request_graphql(const char *query, - const struct shopify_session *session, char **json) -{ - CURL *curl = curl_easy_init(); - char url[GRAPHQL_URL_LEN + strlen(session->shop) + 1]; - sprintf(url, GRAPHQL_URL, session->shop); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, query); - struct curl_slist *list = NULL; - char header[TOKEN_HEADER_LEN + strlen(session->access_token) + 1]; - sprintf(header, TOKEN_HEADER, session->access_token); - list = curl_slist_append(list, header); - list = curl_slist_append(list, "Content-Type: application/graphql"); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, append); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, json); - curl_easy_perform(curl); - curl_slist_free_all(list); - curl_easy_cleanup(curl); -} - -static inline void request_cleanup() -{ - curl_global_cleanup(); -} |