summaryrefslogtreecommitdiff
path: root/post.h
blob: ded474ee1ef69e076ebfaf1c11a54d0cae8a4273 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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;
}