aboutsummaryrefslogtreecommitdiff
path: root/src/jurl.h
blob: 2f720c01b9156488b209e1c1e53123806cf43e70 (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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#pragma once
#include <curl/curl.h>
#include <janet.h>

// = structures

// 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
	};
};

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

// mime.c
struct jurl_mime {
	curl_mime *mime;
	int clean;
};
typedef struct jurl_mime jurl_mime;

struct jurl_mimepart {
	curl_mimepart *mimepart;
	jurl_mime     *parent;
	struct jurl_cleanup *cleanup;
};
typedef struct jurl_mimepart jurl_mimepart;

// = functions

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

// cleanup.c
void jurl_do_cleanup(struct jurl_cleanup **src);
struct jurl_cleanup *register_cleanup(struct jurl_cleanup **prev, enum jurl_cleanup_type type);

// enums.c
CURLcode jurl_setenum(jurl_handle *jurl, CURLoption opt, Janet val);
Janet jurl_getinfoenum(CURLINFO info, long code);
Janet jurl_getinfomask(CURLINFO info, long code);

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

// getinfo.c
JANET_CFUN(jurl_getinfo);

// jurl.c
JANET_CFUN(jurl_dup);
jurl_handle *janet_getjurl(Janet *argv, int32_t n);
JANET_CFUN(jurl_global_init);
JANET_CFUN(jurl_global_cleanup);
JANET_CFUN(jurl_new);
JANET_CFUN(jurl_perform);
JANET_CFUN(jurl_reset);

// mime.c - mime
JANET_CFUN(jurl_mime_addpart);
JANET_CFUN(jurl_mime_new);
jurl_mime *janet_getjurlmime(Janet *argv, int32_t n);

// mime.c - mimepart
jurl_mimepart *janet_getjurlmimepart(Janet *argv, int32_t n);
JANET_CFUN(jurl_mime_data);
JANET_CFUN(jurl_mime_data_cb);
JANET_CFUN(jurl_mime_encoder);
JANET_CFUN(jurl_mime_filedata);
JANET_CFUN(jurl_mime_filename);
JANET_CFUN(jurl_mime_headers);
JANET_CFUN(jurl_mime_name);
JANET_CFUN(jurl_mime_subparts);
JANET_CFUN(jurl_mime_type);

// setopt.c
JANET_CFUN(jurl_setopt);

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