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
|
package vendor_curl
import c "core:c/libc"
/* Flag bits in the curl_blob struct: */
BLOB_COPY :: blob_flags{.COPY} /* tell libcurl to copy the data */
BLOB_NOCOPY :: blob_flags{} /* tell libcurl to NOT copy the data */
blob_flags :: distinct bit_set[blob_flag; c.uint]
blob_flag :: enum c.uint {
COPY = 0,
}
blob :: struct {
data: rawptr,
len: c.size_t,
flags: blob_flags, /* bit 0 is defined, the rest are reserved and should be
left zeroes */
}
@(default_calling_convention="c", link_prefix="curl_")
foreign lib {
easy_init :: proc() -> ^CURL ---
easy_setopt :: proc(curl: ^CURL, option: option, #c_vararg args: ..any) -> code ---
easy_perform :: proc(curl: ^CURL) -> code ---
easy_cleanup :: proc(curl: ^CURL) ---
/*
* NAME curl_easy_getinfo()
*
* DESCRIPTION
*
* Request internal information from the curl session with this function.
* The third argument MUST be pointing to the specific type of the used option
* which is documented in each manpage of the option. The data pointed to
* will be filled in accordingly and can be relied upon only if the function
* returns CURLE_OK. This function is intended to get used *AFTER* a performed
* transfer, all results from this function are undefined until the transfer
* is completed.
*/
easy_getinfo :: proc(curl: ^CURL, info: INFO, #c_vararg args: ..any) -> code ---
/*
* NAME curl_easy_duphandle()
*
* DESCRIPTION
*
* Creates a new curl session handle with the same options set for the handle
* passed in. Duplicating a handle could only be a matter of cloning data and
* options, internal state info and things like persistent connections cannot
* be transferred. It is useful in multithreaded applications when you can run
* curl_easy_duphandle() for each new thread to avoid a series of identical
* curl_easy_setopt() invokes in every thread.
*/
easy_duphandle :: proc(curl: ^CURL) -> ^CURL ---
/*
* NAME curl_easy_reset()
*
* DESCRIPTION
*
* Re-initializes a curl handle to the default values. This puts back the
* handle to the same state as it was in when it was just created.
*
* It does keep: live connections, the Session ID cache, the DNS cache and the
* cookies.
*/
easy_reset :: proc(curl: ^CURL) ---
/*
* NAME curl_easy_recv()
*
* DESCRIPTION
*
* Receives data from the connected socket. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
easy_recv :: proc(curl: ^CURL, buffer: rawptr, buflen: c.size_t, n: ^c.size_t) -> code ---
/*
* NAME curl_easy_send()
*
* DESCRIPTION
*
* Sends data over the connected socket. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
easy_send :: proc(curl: ^CURL, buffer: rawptr, buflen: c.size_t, n: ^c.size_t) -> code ---
/*
* NAME curl_easy_upkeep()
*
* DESCRIPTION
*
* Performs connection upkeep for the given session handle.
*/
easy_upkeep :: proc(curl: ^CURL) -> code ---
}
|