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
97
98
99
100
101
102
103
104
105
|
#pragma once
#include <curl/curl.h>
#include <janet.h>
// = polyfills
#if JANET_VERSION_MAJOR < 2 && JANET_VERSION_MINOR < 28
#define POLYFILL_CBYTES
#endif
#ifdef POLYFILL_CBYTES
const char *janet_getcbytes(const Janet *argv, int32_t n);
const char *janet_optcbytes(const Janet *argv, int32_t argc, int32_t n, const char *dflt);
#endif
// = 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);
JANET_CFUN(jurl_escape);
JANET_CFUN(jurl_unescape);
JANET_CFUN(jurl_wrap_error);
|