summaryrefslogtreecommitdiff
path: root/post.h
diff options
context:
space:
mode:
Diffstat (limited to 'post.h')
-rw-r--r--post.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/post.h b/post.h
new file mode 100644
index 0000000..ded474e
--- /dev/null
+++ b/post.h
@@ -0,0 +1,30 @@
+#include "request.h"
+
+inline void post(const char *path, const char *pairs[], size_t n)
+{
+ size_t length = 0;
+ for (size_t i = 0; i < n; i += 2) {
+ const char *pair = pairs[i];
+ if (pair && strcmp(pair, ""))
+ length += strlen(pair) + strlen(++pair) + 3;
+ }
+
+ char content[length + 1];
+ memset(content, 0, strlen(content));
+ for (size_t i = 0; i < n; i += 2) {
+ const char *pair = pairs[i];
+ if (pair && strcmp(pair, ""))
+ sprintf(content, "%s%s: %s\n", content, pairs[i + 1]
+ , pair);
+ }
+
+ struct curl_httppost *post, *last = NULL;
+ curl_formadd(&post, &last
+ , CURLFORM_COPYNAME, "content"
+ , CURLFORM_PTRCONTENTS, content
+ , CURLFORM_END);
+ last = NULL;
+ request(path, "", NULL, NULL, post);
+ curl_formfree(post);
+ post = NULL;
+}