summaryrefslogtreecommitdiff
path: root/rtclient/request.h
diff options
context:
space:
mode:
authorꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id>2019-09-14 10:42:33 +0800
committerꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id>2019-09-14 10:42:33 +0800
commit03f47c60e7963f24b8fa073abe2ad94cd688fc26 (patch)
tree0dea477977ec8e2e3cf6c9ae18904ba0a073e54b /rtclient/request.h
parent670dc1542e022391737c5fcf01b3cbe8f04c8327 (diff)
Follow a convenient way for inlining request function
https://en.wikipedia.org/wiki/Inline_function#C99
Diffstat (limited to 'rtclient/request.h')
-rw-r--r--rtclient/request.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/rtclient/request.h b/rtclient/request.h
new file mode 100644
index 0000000..a523610
--- /dev/null
+++ b/rtclient/request.h
@@ -0,0 +1,50 @@
+#ifndef RTCLIENT_REQUEST_H
+#define RTCLIENT_REQUEST_H
+
+#ifdef DEBUG
+#ifdef ANDROID
+#include <android/log.h>
+#else
+#include <stdio.h>
+#endif // ANDROID
+#endif // DEBUG
+#include <string.h>
+#include <curl/curl.h>
+
+extern CURL *curl;
+extern char *server_url;
+
+inline void request(const char *path, const char *suffix
+ , size_t (*writefunction)(void *, size_t, size_t, void *)
+ , void *writedata, struct curl_httppost *post)
+{
+ char url[strlen(server_url) + strlen(path) + strlen(suffix) + 1];
+ sprintf(url, "%s%s%s", server_url, path, suffix);
+ curl_easy_setopt(curl, CURLOPT_URL, url);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunction);
+ if (writedata)
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, writedata);
+ else
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
+ if (post)
+ curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
+ else
+ curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
+
+#ifdef DEBUG
+ CURLcode res =
+#endif // DEBUG
+ curl_easy_perform(curl);
+#ifdef DEBUG
+ if (res != CURLE_OK) {
+ const char *error = curl_easy_strerror(res);
+#ifdef ANDROID
+ __android_log_print(ANDROID_LOG_ERROR, "librtclient", "%s: %s"
+ , __func__, error);
+#else
+ fprintf(stderr, "%s: %s\n", __func__, error);
+#endif // ANDROID
+ }
+#endif // DEBUG
+}
+#endif // RTCLIENT_REQUEST_H