aboutsummaryrefslogtreecommitdiff
path: root/src/jurl.h
blob: 4b54165a16c06ebf566629eaf9640dba0fde7a28 (plain) (blame)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#pragma once
#include <curl/curl.h>
#include <janet.h>

// cleanup.c
enum jurl_cleanup_type {
	JURL_CLEANUP_TYPE_SLIST,
};
struct jurl_cleanup {
	struct jurl_cleanup *next;
	enum jurl_cleanup_type type;
	union {
		struct curl_slist *slist; // when JURL_CLEANUP_TYPE_SLIST
	};
};

struct jurl_cleanup *register_cleanup(struct jurl_cleanup **prev, enum jurl_cleanup_type type);
void jurl_do_cleanup(struct jurl_cleanup **src);

// jurl.c
struct jurl_handle {
	CURL* handle;
	struct jurl_cleanup* cleanup;
};
typedef struct jurl_handle jurl_handle;

JANET_CFUN(jurl_new);
JANET_CFUN(jurl_reset);
JANET_CFUN(jurl_dup);
JANET_CFUN(jurl_perform);
jurl_handle *janet_getjurl(Janet *argv, int32_t n);

// callbacks.c
CURLcode jurl_setcallback(jurl_handle *jurl, CURLoption opt, JanetFunction *fun);

// enums.c
CURLcode jurl_setenum(jurl_handle *jurl, CURLoption opt, Janet val);

// errors.c
Janet jurl_geterror(CURLcode code);
JANET_CFUN(jurl_strerror);

// getinfo.c
JANET_CFUN(jurl_getinfo);

// mime.c
struct jurl_mime {
	CURL *curl;
	curl_mime *handle;
	struct jurl_cleanup* cleanup;
	int clean;
};
typedef struct jurl_mime jurl_mime;
JANET_CFUN(jurl_mime_new);
JANET_CFUN(jurl_mime_addpart);
JANET_CFUN(jurl_mime_name);
JANET_CFUN(jurl_mime_data);
JANET_CFUN(jurl_mime_data_cb);
JANET_CFUN(jurl_mime_filedata);
JANET_CFUN(jurl_mime_filename);
JANET_CFUN(jurl_mime_type);
JANET_CFUN(jurl_mime_headers);
JANET_CFUN(jurl_mime_encoder);
JANET_CFUN(jurl_mime_subparts);
jurl_mime *janet_getjurlmime(Janet *argv, int32_t n);

// setopt.c
JANET_CFUN(jurl_setopt);

// util.c
int janet_getslist(struct curl_slist **slist, Janet *argv, int32_t n);
JANET_CFUN(jurl_escape);
JANET_CFUN(jurl_unescape);
JANET_CFUN(jurl_wrap_error);