ruby-curl 0.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00445f1db3ded1ea30650acdc0a0ea4937e7e39922fcaca265653bf1ba3e9ee5
4
- data.tar.gz: c6d3dab6a5ad87b110b5e9ff85ecea748a338f7dc9ef2fbce0a5bd4cb7f619c0
3
+ metadata.gz: db064c18f442a946d1a99c455d2b838e133cb9acbc103f0eeb0a9588d1ebfff1
4
+ data.tar.gz: 7e603e2b87f653d7c8cc3be86f63325586fea95b8d5c522b493cd34956d5afec
5
5
  SHA512:
6
- metadata.gz: faa24744a93aa295bfc350375deca5e3341b4a2f2b1b172a215826bcfa4a0decece5e021fd75ed96a396cf123b614769af97bf2b35a4cee651566aa3295bf8a5
7
- data.tar.gz: 6fe7d3eabfa07af9ea4f691fa1968fd4a85390bdc9d34ee9e98f54aca502ce4cd87c5ddb8a555dce3bdd3d8b4690d094a84f5d1f81cb318dcbc9b881f4a04052
6
+ metadata.gz: 3dd4cc7dfedc122584dd9f09e3c58ec6b9e6c936879b4c689b3b24f8a11b5eed2ecb818a29be083b3a605454f5ed06520d1be840cb855708d21963ef9def1ca0
7
+ data.tar.gz: 814b67e4949cc544ee11ed05d2c96e049c1738e310469e9912e03fa40b80a59309468b4bfd9ad2102b82ee8bff754629d113a0b2a0f63144c336ed301f720f96
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec :name => 'ruby-curl'
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 Vijayakumar Ramachandran
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,48 @@
1
+ [![Gem Version](https://badge.fury.io/rb/ruby-curl.svg)](https://badge.fury.io/rb/ruby-curl)
2
+
3
+
4
+ # Introduction
5
+
6
+ Ruby-curl aims to be a true libcurl binding for Ruby. Currently, ruby-curl offers full support for the HTTP protocol over libcurl’s easy interface. Just like libcurl, when using ruby-curl you init your easy-session and get a handle, which you use as input to the following interface functions you use.
7
+
8
+
9
+
10
+ # Requirements
11
+
12
+ ```
13
+ Ruby 2.7 or higher
14
+
15
+ Libcurl 7.28.0 or higher
16
+ ```
17
+
18
+
19
+ # Installation
20
+
21
+ Bundler:
22
+ ```
23
+ Gem ‘ruby-curl’
24
+ ```
25
+
26
+ Manual:
27
+ ```
28
+ Gem install ruby-curl
29
+ ```
30
+
31
+
32
+
33
+ # Usage:
34
+
35
+ ```
36
+ require 'ruby-curl'
37
+
38
+ curl = Curl::Easy.new
39
+ curl.setopt(Curl::Opt::URL, "https://example.com")
40
+
41
+ res = curl.perform
42
+ # <!doctype html>...
43
+
44
+ res
45
+ # => 0 # CURLE_OK
46
+
47
+ curl.cleanup
48
+ ```
data/ext/curl.c ADDED
@@ -0,0 +1,402 @@
1
+ #include "curl.h"
2
+
3
+ VALUE rb_mCurl;
4
+
5
+ void Init_curl() {
6
+ VALUE rb_mOpt, rb_mMOpt, rb_mInfo, rb_mProxy, rb_mAuth, rb_mProto, rb_mError;
7
+
8
+ rb_mCurl = rb_define_module("Curl");
9
+ rb_mOpt = rb_define_module_under(rb_mCurl, "Opt");
10
+ rb_mMOpt = rb_define_module_under(rb_mCurl, "MOpt");
11
+ rb_mInfo = rb_define_module_under(rb_mCurl, "Info");
12
+ rb_mProxy = rb_define_module_under(rb_mCurl, "Proxy");
13
+ rb_mAuth = rb_define_module_under(rb_mCurl, "Auth");
14
+ rb_mProto = rb_define_module_under(rb_mCurl, "Proto");
15
+ rb_mError = rb_define_module_under(rb_mCurl, "Error");
16
+
17
+ curl_global_init(CURL_GLOBAL_ALL);
18
+
19
+ rb_define_const(rb_mCurl, "LIBCURL_VERSION", rb_str_new_cstr(curl_version()));
20
+
21
+ /* Curl constants */
22
+ RB_DEFINE_M_CURL_CONST("HTTP_VERSION_NONE", CURL_HTTP_VERSION_NONE);
23
+ RB_DEFINE_M_CURL_CONST("HTTP_VERSION_1_0", CURL_HTTP_VERSION_1_0);
24
+ RB_DEFINE_M_CURL_CONST("HTTP_VERSION_1_1", CURL_HTTP_VERSION_1_1);
25
+ #if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */
26
+ RB_DEFINE_M_CURL_CONST("HTTP_VERSION_2_0", CURL_HTTP_VERSION_2_0);
27
+ #endif
28
+ #if LIBCURL_VERSION_NUM >= 0x072f00 /* Available since 7.47.0 */
29
+ RB_DEFINE_M_CURL_CONST("HTTP_VERSION_2TLS", CURL_HTTP_VERSION_2TLS);
30
+ #endif
31
+ #if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */
32
+ RB_DEFINE_M_CURL_CONST("HTTP_VERSION_2_PRIOR_KNOWLEDGE", CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE);
33
+ #endif
34
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_DEFAULT", CURL_SSLVERSION_DEFAULT);
35
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_TLSv1", CURL_SSLVERSION_TLSv1);
36
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_SSLv2", CURL_SSLVERSION_SSLv2);
37
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_SSLv3", CURL_SSLVERSION_SSLv3);
38
+ #if LIBCURL_VERSION_NUM >= 0x072200 /* Available since 7.34.0 */
39
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_TLSv1_0", CURL_SSLVERSION_TLSv1_0);
40
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_TLSv1_1", CURL_SSLVERSION_TLSv1_1);
41
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_TLSv1_2", CURL_SSLVERSION_TLSv1_2);
42
+ #endif
43
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_TLSv1_3", CURL_SSLVERSION_TLSv1_3);
44
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_MAX_DEFAULT", CURL_SSLVERSION_MAX_DEFAULT);
45
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_MAX_TLSv1_0", CURL_SSLVERSION_MAX_TLSv1_0);
46
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_MAX_TLSv1_1", CURL_SSLVERSION_MAX_TLSv1_1);
47
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_MAX_TLSv1_2", CURL_SSLVERSION_MAX_TLSv1_2);
48
+ RB_DEFINE_M_CURL_CONST("SSLVERSION_MAX_TLSv1_3", CURL_SSLVERSION_MAX_TLSv1_3);
49
+ RB_DEFINE_M_CURL_CONST("TIMECOND_IFMODSINCE", CURL_TIMECOND_IFMODSINCE);
50
+ RB_DEFINE_M_CURL_CONST("TIMECOND_IFUNMODSINCE", CURL_TIMECOND_IFUNMODSINCE);
51
+ RB_DEFINE_M_CURL_CONST("TIMECOND_LASTMOD", CURL_TIMECOND_LASTMOD);
52
+ RB_DEFINE_M_CURL_CONST("TIMECOND_NONE", CURL_TIMECOND_NONE);
53
+ RB_DEFINE_M_CURL_CONST("NETRC_OPTIONAL", CURL_NETRC_OPTIONAL);
54
+ RB_DEFINE_M_CURL_CONST("NETRC_IGNORED", CURL_NETRC_IGNORED);
55
+ RB_DEFINE_M_CURL_CONST("NETRC_REQUIRED", CURL_NETRC_REQUIRED);
56
+ #if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */
57
+ RB_DEFINE_M_CURL_CONST("REDIR_POST_301", CURL_REDIR_POST_301);
58
+ RB_DEFINE_M_CURL_CONST("REDIR_POST_302", CURL_REDIR_POST_302);
59
+ RB_DEFINE_M_CURL_CONST("REDIR_POST_ALL", CURL_REDIR_POST_ALL);
60
+ #endif
61
+ #if LIBCURL_VERSION_NUM >= 0x071901 /* Available since 7.25.1 */
62
+ RB_DEFINE_M_CURL_CONST("REDIR_POST_303", CURL_REDIR_POST_303);
63
+ #endif
64
+ #if LIBCURL_VERSION_NUM >= 0x070a08 /* Available since 7.10.8 */
65
+ RB_DEFINE_M_CURL_CONST("IPRESOLVE_WHATEVER", CURL_IPRESOLVE_WHATEVER);
66
+ RB_DEFINE_M_CURL_CONST("IPRESOLVE_V4", CURL_IPRESOLVE_V4);
67
+ RB_DEFINE_M_CURL_CONST("IPRESOLVE_V6", CURL_IPRESOLVE_V6);
68
+ #endif
69
+
70
+ /* Curl::Opt constants */
71
+ RB_DEFINE_M_OPT_CONST("URL", CURLOPT_URL);
72
+ RB_DEFINE_M_OPT_CONST("POST", CURLOPT_POST);
73
+ RB_DEFINE_M_OPT_CONST("TIMEOUT", CURLOPT_TIMEOUT);
74
+ RB_DEFINE_M_OPT_CONST("WRITEFUNCTION", CURLOPT_WRITEFUNCTION);
75
+ RB_DEFINE_M_OPT_CONST("WRITEDATA", CURLOPT_WRITEDATA);
76
+ RB_DEFINE_M_OPT_CONST("HEADERFUNCTION", CURLOPT_HEADERFUNCTION);
77
+ RB_DEFINE_M_OPT_CONST("HEADERDATA", CURLOPT_HEADERDATA);
78
+ RB_DEFINE_M_OPT_CONST("READFUNCTION", CURLOPT_READFUNCTION);
79
+ RB_DEFINE_M_OPT_CONST("READDATA", CURLOPT_READDATA);
80
+ RB_DEFINE_M_OPT_CONST("FOLLOWLOCATION", CURLOPT_FOLLOWLOCATION);
81
+ RB_DEFINE_M_OPT_CONST("MAXREDIRS", CURLOPT_MAXREDIRS);
82
+ RB_DEFINE_M_OPT_CONST("PUT", CURLOPT_PUT);
83
+ RB_DEFINE_M_OPT_CONST("HTTPGET", CURLOPT_HTTPGET);
84
+ RB_DEFINE_M_OPT_CONST("UPLOAD", CURLOPT_UPLOAD);
85
+ RB_DEFINE_M_OPT_CONST("VERBOSE", CURLOPT_VERBOSE);
86
+ RB_DEFINE_M_OPT_CONST("POSTFIELDS", CURLOPT_POSTFIELDS);
87
+ RB_DEFINE_M_OPT_CONST("USERAGENT", CURLOPT_USERAGENT);
88
+ RB_DEFINE_M_OPT_CONST("USERPWD", CURLOPT_USERPWD);
89
+ #if LIBCURL_VERSION_NUM >= 0x070b00 /* Available since 7.11.0 */
90
+ RB_DEFINE_M_OPT_CONST("NETRC_FILE", CURLOPT_NETRC_FILE);
91
+ #endif
92
+ #if LIBCURL_VERSION_NUM >= 0x070b02 /* Available since 7.11.2 */
93
+ RB_DEFINE_M_OPT_CONST("TCP_NODELAY", CURLOPT_TCP_NODELAY);
94
+ #endif
95
+ #if LIBCURL_VERSION_NUM >= 0x070e01 /* Available since 7.14.1 */
96
+ RB_DEFINE_M_OPT_CONST("COOKIELIST", CURLOPT_COOKIELIST);
97
+ RB_DEFINE_M_OPT_CONST("IGNORE_CONTENT_LENGTH", CURLOPT_IGNORE_CONTENT_LENGTH);
98
+ #endif
99
+ #if LIBCURL_VERSION_NUM >= 0x070f02 /* Available since 7.15.2 */
100
+ RB_DEFINE_M_OPT_CONST("CONNECT_ONLY", CURLOPT_CONNECT_ONLY);
101
+ RB_DEFINE_M_OPT_CONST("LOCALPORT", CURLOPT_LOCALPORT);
102
+ #endif
103
+ #if LIBCURL_VERSION_NUM >= 0x070f05 /* Available since 7.15.5 */
104
+ RB_DEFINE_M_OPT_CONST("MAX_RECV_SPEED_LARGE", CURLOPT_MAX_RECV_SPEED_LARGE);
105
+ RB_DEFINE_M_OPT_CONST("MAX_SEND_SPEED_LARGE", CURLOPT_MAX_SEND_SPEED_LARGE);
106
+ #endif
107
+ #if LIBCURL_VERSION_NUM >= 0x071000 /* Available since 7.16.0 */
108
+ RB_DEFINE_M_OPT_CONST("SSL_SESSIONID_CACHE", CURLOPT_SSL_SESSIONID_CACHE);
109
+ #endif
110
+ #if LIBCURL_VERSION_NUM >= 0x071002 /* Available since 7.16.2 */
111
+ RB_DEFINE_M_OPT_CONST("CONNECTTIMEOUT_MS", CURLOPT_CONNECTTIMEOUT_MS);
112
+ RB_DEFINE_M_OPT_CONST("HTTP_CONTENT_DECODING", CURLOPT_HTTP_CONTENT_DECODING);
113
+ RB_DEFINE_M_OPT_CONST("HTTP_TRANSFER_DECODING", CURLOPT_HTTP_TRANSFER_DECODING);
114
+ RB_DEFINE_M_OPT_CONST("TIMEOUT_MS", CURLOPT_TIMEOUT_MS);
115
+ #endif
116
+ #if LIBCURL_VERSION_NUM >= 0x071004 /* Available since 7.16.4 */
117
+ RB_DEFINE_M_OPT_CONST("KRBLEVEL", CURLOPT_KRBLEVEL);
118
+ #endif
119
+ #if LIBCURL_VERSION_NUM >= 0x071300 /* Available since 7.19.0 */
120
+ RB_DEFINE_M_OPT_CONST("ADDRESS_SCOPE", CURLOPT_ADDRESS_SCOPE);
121
+ RB_DEFINE_M_OPT_CONST("CRLFILE", CURLOPT_CRLFILE);
122
+ RB_DEFINE_M_OPT_CONST("ISSUERCERT", CURLOPT_ISSUERCERT);
123
+ RB_DEFINE_M_OPT_CONST("KEYPASSWD", CURLOPT_KEYPASSWD);
124
+ #endif
125
+ #if LIBCURL_VERSION_NUM >= 0x071301 /* Available since 7.19.1 */
126
+ RB_DEFINE_M_OPT_CONST("CERTINFO", CURLOPT_CERTINFO);
127
+ RB_DEFINE_M_OPT_CONST("PASSWORD", CURLOPT_PASSWORD);
128
+ RB_DEFINE_M_OPT_CONST("POSTREDIR", CURLOPT_POSTREDIR);
129
+ RB_DEFINE_M_OPT_CONST("USERNAME", CURLOPT_USERNAME);
130
+ #endif
131
+ #if LIBCURL_VERSION_NUM >= 0x071304 /* Available since 7.19.4 */
132
+ RB_DEFINE_M_OPT_CONST("NOPROXY", CURLOPT_NOPROXY);
133
+ RB_DEFINE_M_OPT_CONST("PROTOCOLS", CURLOPT_PROTOCOLS);
134
+ RB_DEFINE_M_OPT_CONST("REDIR_PROTOCOLS", CURLOPT_REDIR_PROTOCOLS);
135
+ RB_DEFINE_M_OPT_CONST("SOCKS5_GSSAPI_NEC", CURLOPT_SOCKS5_GSSAPI_NEC);
136
+ RB_DEFINE_M_OPT_CONST("SOCKS5_GSSAPI_SERVICE", CURLOPT_SOCKS5_GSSAPI_SERVICE);
137
+ #endif
138
+ #if LIBCURL_VERSION_NUM >= 0x071504 /* Available since 7.21.4 */
139
+ RB_DEFINE_M_OPT_CONST("TLSAUTH_PASSWORD", CURLOPT_TLSAUTH_PASSWORD);
140
+ RB_DEFINE_M_OPT_CONST("TLSAUTH_TYPE", CURLOPT_TLSAUTH_TYPE);
141
+ #endif
142
+ #if LIBCURL_VERSION_NUM >= 0x071600 /* Available since 7.22.0 */
143
+ RB_DEFINE_M_OPT_CONST("GSSAPI_DELEGATION", CURLOPT_GSSAPI_DELEGATION);
144
+ #endif
145
+ #if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */
146
+ RB_DEFINE_M_OPT_CONST("UNIX_SOCKET_PATH", CURLOPT_UNIX_SOCKET_PATH);
147
+ #endif
148
+ #if LIBCURL_VERSION_NUM >= 0x072a00 /* Available since 7.42.0 */
149
+ RB_DEFINE_M_OPT_CONST("PATH_AS_IS", CURLOPT_PATH_AS_IS);
150
+ #endif
151
+ #if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */
152
+ RB_DEFINE_M_OPT_CONST("PIPEWAIT", CURLOPT_PIPEWAIT);
153
+ #endif
154
+ #if LIBCURL_VERSION_NUM >= 0x070a06 /* Available since 7.10.6 */
155
+ RB_DEFINE_M_OPT_CONST("HTTPAUTH", CURLOPT_HTTPAUTH);
156
+ #endif
157
+ #if LIBCURL_VERSION_NUM >= 0x070a07 /* Available since 7.10.7 */
158
+ RB_DEFINE_M_OPT_CONST("PROXYAUTH", CURLOPT_PROXYAUTH);
159
+ #endif
160
+ #if LIBCURL_VERSION_NUM >= 0x070a08 /* Available since 7.10.8 */
161
+ RB_DEFINE_M_OPT_CONST("IPRESOLVE", CURLOPT_IPRESOLVE);
162
+ RB_DEFINE_M_OPT_CONST("MAXFILESIZE", CURLOPT_MAXFILESIZE);
163
+ #endif
164
+ RB_DEFINE_M_OPT_CONST("AUTOREFERER", CURLOPT_AUTOREFERER);
165
+ RB_DEFINE_M_OPT_CONST("BUFFERSIZE", CURLOPT_BUFFERSIZE);
166
+ RB_DEFINE_M_OPT_CONST("CAINFO", CURLOPT_CAINFO);
167
+ RB_DEFINE_M_OPT_CONST("CAPATH", CURLOPT_CAPATH);
168
+ RB_DEFINE_M_OPT_CONST("CONNECTTIMEOUT", CURLOPT_CONNECTTIMEOUT);
169
+ RB_DEFINE_M_OPT_CONST("COOKIE", CURLOPT_COOKIE);
170
+ RB_DEFINE_M_OPT_CONST("COOKIEFILE", CURLOPT_COOKIEFILE);
171
+ RB_DEFINE_M_OPT_CONST("COOKIEJAR", CURLOPT_COOKIEJAR);
172
+ RB_DEFINE_M_OPT_CONST("COOKIESESSION", CURLOPT_COOKIESESSION);
173
+ RB_DEFINE_M_OPT_CONST("CRLF", CURLOPT_CRLF);
174
+ RB_DEFINE_M_OPT_CONST("CUSTOMREQUEST", CURLOPT_CUSTOMREQUEST);
175
+ RB_DEFINE_M_OPT_CONST("DNS_CACHE_TIMEOUT", CURLOPT_DNS_CACHE_TIMEOUT);
176
+ RB_DEFINE_M_OPT_CONST("DNS_USE_GLOBAL_CACHE", CURLOPT_DNS_USE_GLOBAL_CACHE);
177
+ RB_DEFINE_M_OPT_CONST("EGDSOCKET", CURLOPT_EGDSOCKET);
178
+ RB_DEFINE_M_OPT_CONST("ENCODING", CURLOPT_ENCODING);
179
+ RB_DEFINE_M_OPT_CONST("FAILONERROR", CURLOPT_FAILONERROR);
180
+ RB_DEFINE_M_OPT_CONST("FILETIME", CURLOPT_FILETIME);
181
+ RB_DEFINE_M_OPT_CONST("FORBID_REUSE", CURLOPT_FORBID_REUSE);
182
+ RB_DEFINE_M_OPT_CONST("FRESH_CONNECT", CURLOPT_FRESH_CONNECT);
183
+ RB_DEFINE_M_OPT_CONST("HEADER", CURLOPT_HEADER);
184
+ RB_DEFINE_M_OPT_CONST("HTTP200ALIASES", CURLOPT_HTTP200ALIASES);
185
+ RB_DEFINE_M_OPT_CONST("HTTPHEADER", CURLOPT_HTTPHEADER);
186
+ RB_DEFINE_M_OPT_CONST("HTTPPROXYTUNNEL", CURLOPT_HTTPPROXYTUNNEL);
187
+ RB_DEFINE_M_OPT_CONST("HTTP_VERSION", CURLOPT_HTTP_VERSION);
188
+ RB_DEFINE_M_OPT_CONST("INFILESIZE", CURLOPT_INFILESIZE);
189
+ RB_DEFINE_M_OPT_CONST("INTERFACE", CURLOPT_INTERFACE);
190
+ RB_DEFINE_M_OPT_CONST("LOW_SPEED_LIMIT", CURLOPT_LOW_SPEED_LIMIT);
191
+ RB_DEFINE_M_OPT_CONST("LOW_SPEED_TIME", CURLOPT_LOW_SPEED_TIME);
192
+ RB_DEFINE_M_OPT_CONST("MAXCONNECTS", CURLOPT_MAXCONNECTS);
193
+ RB_DEFINE_M_OPT_CONST("NETRC", CURLOPT_NETRC);
194
+ RB_DEFINE_M_OPT_CONST("NOBODY", CURLOPT_NOBODY);
195
+ RB_DEFINE_M_OPT_CONST("NOPROGRESS", CURLOPT_NOPROGRESS);
196
+ RB_DEFINE_M_OPT_CONST("NOSIGNAL", CURLOPT_NOSIGNAL);
197
+ RB_DEFINE_M_OPT_CONST("PORT", CURLOPT_PORT);
198
+ RB_DEFINE_M_OPT_CONST("PRIVATE", CURLOPT_PRIVATE);
199
+ RB_DEFINE_M_OPT_CONST("PROXY", CURLOPT_PROXY);
200
+ RB_DEFINE_M_OPT_CONST("PROXYPORT", CURLOPT_PROXYPORT);
201
+ RB_DEFINE_M_OPT_CONST("PROXYTYPE", CURLOPT_PROXYTYPE);
202
+ RB_DEFINE_M_OPT_CONST("PROXYUSERPWD", CURLOPT_PROXYUSERPWD);
203
+ RB_DEFINE_M_OPT_CONST("RANDOM_FILE", CURLOPT_RANDOM_FILE);
204
+ RB_DEFINE_M_OPT_CONST("RANGE", CURLOPT_RANGE);
205
+ RB_DEFINE_M_OPT_CONST("REFERER", CURLOPT_REFERER);
206
+ RB_DEFINE_M_OPT_CONST("RESUME_FROM", CURLOPT_RESUME_FROM);
207
+ RB_DEFINE_M_OPT_CONST("SSLCERT", CURLOPT_SSLCERT);
208
+ RB_DEFINE_M_OPT_CONST("SSLCERTTYPE", CURLOPT_SSLCERTTYPE);
209
+ RB_DEFINE_M_OPT_CONST("SSLENGINE", CURLOPT_SSLENGINE);
210
+ RB_DEFINE_M_OPT_CONST("SSLENGINE_DEFAULT", CURLOPT_SSLENGINE_DEFAULT);
211
+ RB_DEFINE_M_OPT_CONST("SSLKEY", CURLOPT_SSLKEY);
212
+ RB_DEFINE_M_OPT_CONST("SSLKEYTYPE", CURLOPT_SSLKEYTYPE);
213
+ RB_DEFINE_M_OPT_CONST("SSLVERSION", CURLOPT_SSLVERSION);
214
+ RB_DEFINE_M_OPT_CONST("SSL_CIPHER_LIST", CURLOPT_SSL_CIPHER_LIST);
215
+ RB_DEFINE_M_OPT_CONST("SSL_VERIFYHOST", CURLOPT_SSL_VERIFYHOST);
216
+ RB_DEFINE_M_OPT_CONST("SSL_VERIFYPEER", CURLOPT_SSL_VERIFYPEER);
217
+ RB_DEFINE_M_OPT_CONST("TIMECONDITION", CURLOPT_TIMECONDITION);
218
+ RB_DEFINE_M_OPT_CONST("TIMEVALUE", CURLOPT_TIMEVALUE);
219
+ RB_DEFINE_M_OPT_CONST("TRANSFERTEXT", CURLOPT_TRANSFERTEXT);
220
+ RB_DEFINE_M_OPT_CONST("UNRESTRICTED_AUTH", CURLOPT_UNRESTRICTED_AUTH);
221
+ #if LIBCURL_VERSION_NUM >= 0x071503 /* Available since 7.21.3 */
222
+ RB_DEFINE_M_OPT_CONST("RESOLVE", CURLOPT_RESOLVE);
223
+ #endif
224
+ #if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */
225
+ RB_DEFINE_M_OPT_CONST("PROXYHEADER", CURLOPT_PROXYHEADER);
226
+ #endif
227
+
228
+ /* Curl::MOpt constants */
229
+ RB_DEFINE_M_MOPT_CONST("MAXCONNECTS", CURLMOPT_MAXCONNECTS);
230
+ RB_DEFINE_M_MOPT_CONST("PIPELINING", CURLMOPT_PIPELINING);
231
+
232
+ /* Curl::Info constants */
233
+ RB_DEFINE_M_INFO_CONST("EFFECTIVE_URL", CURLINFO_EFFECTIVE_URL);
234
+ RB_DEFINE_M_INFO_CONST("FILETIME", CURLINFO_FILETIME);
235
+ RB_DEFINE_M_INFO_CONST("TOTAL_TIME", CURLINFO_TOTAL_TIME);
236
+ RB_DEFINE_M_INFO_CONST("NAMELOOKUP_TIME", CURLINFO_NAMELOOKUP_TIME);
237
+ RB_DEFINE_M_INFO_CONST("CONNECT_TIME", CURLINFO_CONNECT_TIME);
238
+ RB_DEFINE_M_INFO_CONST("PRETRANSFER_TIME", CURLINFO_PRETRANSFER_TIME);
239
+ RB_DEFINE_M_INFO_CONST("STARTTRANSFER_TIME", CURLINFO_STARTTRANSFER_TIME);
240
+ RB_DEFINE_M_INFO_CONST("REDIRECT_TIME", CURLINFO_REDIRECT_TIME);
241
+ RB_DEFINE_M_INFO_CONST("REDIRECT_COUNT", CURLINFO_REDIRECT_COUNT);
242
+ RB_DEFINE_M_INFO_CONST("SIZE_UPLOAD", CURLINFO_SIZE_UPLOAD);
243
+ RB_DEFINE_M_INFO_CONST("SIZE_DOWNLOAD", CURLINFO_SIZE_DOWNLOAD);
244
+ RB_DEFINE_M_INFO_CONST("SPEED_UPLOAD", CURLINFO_SPEED_UPLOAD);
245
+ RB_DEFINE_M_INFO_CONST("SPEED_DOWNLOAD", CURLINFO_SPEED_DOWNLOAD);
246
+ RB_DEFINE_M_INFO_CONST("HEADER_SIZE", CURLINFO_HEADER_SIZE);
247
+ RB_DEFINE_M_INFO_CONST("REQUEST_SIZE", CURLINFO_REQUEST_SIZE);
248
+ RB_DEFINE_M_INFO_CONST("SSL_VERIFYRESULT", CURLINFO_SSL_VERIFYRESULT);
249
+ RB_DEFINE_M_INFO_CONST("CONTENT_TYPE", CURLINFO_CONTENT_TYPE);
250
+ RB_DEFINE_M_INFO_CONST("LASTSOCKET", CURLINFO_LASTSOCKET);
251
+ RB_DEFINE_M_INFO_CONST("CONTENT_LENGTH_DOWNLOAD", CURLINFO_CONTENT_LENGTH_DOWNLOAD);
252
+ RB_DEFINE_M_INFO_CONST("CONTENT_LENGTH_UPLOAD", CURLINFO_CONTENT_LENGTH_UPLOAD);
253
+ /* Curl::Info constants (Available since 7.10.7) */
254
+ RB_DEFINE_M_INFO_CONST("HTTP_CONNECTCODE", CURLINFO_HTTP_CONNECTCODE);
255
+ /* Curl::Info constants (Available since 7.10.8) */
256
+ RB_DEFINE_M_INFO_CONST("HTTPAUTH_AVAIL", CURLINFO_HTTPAUTH_AVAIL);
257
+ RB_DEFINE_M_INFO_CONST("RESPONSE_CODE", CURLINFO_RESPONSE_CODE);
258
+ RB_DEFINE_M_INFO_CONST("PROXYAUTH_AVAIL", CURLINFO_PROXYAUTH_AVAIL);
259
+ /* Curl::Info constants (Available since 7.12.2) */
260
+ RB_DEFINE_M_INFO_CONST("OS_ERRNO", CURLINFO_OS_ERRNO);
261
+ /* Curl::Info constants (Available since 7.12.3) */
262
+ RB_DEFINE_M_INFO_CONST("NUM_CONNECTS", CURLINFO_NUM_CONNECTS);
263
+ RB_DEFINE_M_INFO_CONST("SSL_ENGINES", CURLINFO_SSL_ENGINES);
264
+ /* Curl::Info constants (Available since 7.14.1) */
265
+ RB_DEFINE_M_INFO_CONST("COOKIELIST", CURLINFO_COOKIELIST);
266
+ #if LIBCURL_VERSION_NUM >= 0x071202 /* Curl::Info constants (Available since 7.18.2) */
267
+ RB_DEFINE_M_INFO_CONST("REDIRECT_URL", CURLINFO_REDIRECT_URL);
268
+ #endif
269
+ #if LIBCURL_VERSION_NUM >= 0x071300 /* Curl::Info constants (Available since 7.19.0) */
270
+ RB_DEFINE_M_INFO_CONST("PRIMARY_IP", CURLINFO_PRIMARY_IP);
271
+ #endif
272
+ #if LIBCURL_VERSION_NUM >= 0x071301 /* Curl::Info constants (Available since 7.19.1) */
273
+ RB_DEFINE_M_INFO_CONST("CERTINFO", CURLINFO_CERTINFO);
274
+ #endif
275
+ #if LIBCURL_VERSION_NUM >= 0x071500 /* Curl::Info constants (Available since 7.21.0) */
276
+ RB_DEFINE_M_INFO_CONST("LOCAL_IP", CURLINFO_LOCAL_IP);
277
+ RB_DEFINE_M_INFO_CONST("LOCAL_PORT", CURLINFO_LOCAL_PORT);
278
+ RB_DEFINE_M_INFO_CONST("PRIMARY_PORT", CURLINFO_PRIMARY_PORT);
279
+ #endif
280
+ #if LIBCURL_VERSION_NUM >= 0x073200 /* Curl::Info constants (Available since 7.50.0) */
281
+ RB_DEFINE_M_INFO_CONST("HTTP_VERSION", CURLINFO_HTTP_VERSION);
282
+ #endif
283
+ #if LIBCURL_VERSION_NUM >= 0x073400 /* Curl::Info constants (Available since 7.52.0) */
284
+ RB_DEFINE_M_INFO_CONST("PROTOCOL", CURLINFO_PROTOCOL);
285
+ RB_DEFINE_M_INFO_CONST("PROXY_SSL_VERIFYRESULT", CURLINFO_PROXY_SSL_VERIFYRESULT);
286
+ RB_DEFINE_M_INFO_CONST("SCHEME", CURLINFO_SCHEME);
287
+ #endif
288
+
289
+ /* Curl::Auth constants */
290
+ #if LIBCURL_VERSION_NUM >= 0x071303 /* Available since 7.19.3 */
291
+ RB_DEFINE_M_AUTH_CONST("DIGEST_IE", CURLAUTH_DIGEST_IE);
292
+ #endif
293
+ #if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */
294
+ RB_DEFINE_M_AUTH_CONST("BEARER", CURLAUTH_BEARER);
295
+ #endif
296
+ #if LIBCURL_VERSION_NUM >= 0x072600 /* Available since 7.38.0 */
297
+ RB_DEFINE_M_AUTH_CONST("NEGOTIATE", CURLAUTH_NEGOTIATE);
298
+ #endif
299
+ #if LIBCURL_VERSION_NUM >= 0x071600 /* Available since 7.22.0 */
300
+ RB_DEFINE_M_AUTH_CONST("NTLM_WB", CURLAUTH_NTLM_WB);
301
+ #endif
302
+ #if LIBCURL_VERSION_NUM >= 0x070a06 /* Available since 7.10.6 */
303
+ RB_DEFINE_M_AUTH_CONST("ANY", CURLAUTH_ANY);
304
+ RB_DEFINE_M_AUTH_CONST("ANYSAFE", CURLAUTH_ANYSAFE);
305
+ RB_DEFINE_M_AUTH_CONST("BASIC", CURLAUTH_BASIC);
306
+ RB_DEFINE_M_AUTH_CONST("DIGEST", CURLAUTH_DIGEST);
307
+ RB_DEFINE_M_AUTH_CONST("NTLM", CURLAUTH_NTLM);
308
+ #endif
309
+ #if LIBCURL_VERSION_NUM >= 0x071503 /* Available since 7.21.3 */
310
+ RB_DEFINE_M_AUTH_CONST("ONLY", CURLAUTH_ONLY);
311
+ #endif
312
+
313
+ /* Curl::Proto constants */
314
+ RB_DEFINE_M_PROTO_CONST("DICT", CURLPROTO_DICT);
315
+ RB_DEFINE_M_PROTO_CONST("FILE", CURLPROTO_FILE);
316
+ RB_DEFINE_M_PROTO_CONST("FTP", CURLPROTO_FTP);
317
+ RB_DEFINE_M_PROTO_CONST("FTPS", CURLPROTO_FTPS);
318
+ RB_DEFINE_M_PROTO_CONST("GOPHER", CURLPROTO_GOPHER);
319
+ RB_DEFINE_M_PROTO_CONST("HTTP", CURLPROTO_HTTP);
320
+ RB_DEFINE_M_PROTO_CONST("HTTPS", CURLPROTO_HTTPS);
321
+ RB_DEFINE_M_PROTO_CONST("IMAP", CURLPROTO_IMAP);
322
+ RB_DEFINE_M_PROTO_CONST("IMAPS", CURLPROTO_IMAPS);
323
+ RB_DEFINE_M_PROTO_CONST("LDAP", CURLPROTO_LDAP);
324
+ RB_DEFINE_M_PROTO_CONST("LDAPS", CURLPROTO_LDAPS);
325
+ RB_DEFINE_M_PROTO_CONST("POP3", CURLPROTO_POP3);
326
+ RB_DEFINE_M_PROTO_CONST("POP3S", CURLPROTO_POP3S);
327
+ RB_DEFINE_M_PROTO_CONST("RTMP", CURLPROTO_RTMP);
328
+ RB_DEFINE_M_PROTO_CONST("RTMPE", CURLPROTO_RTMPE);
329
+ RB_DEFINE_M_PROTO_CONST("RTMPS", CURLPROTO_RTMPS);
330
+ RB_DEFINE_M_PROTO_CONST("RTMPT", CURLPROTO_RTMPT);
331
+ RB_DEFINE_M_PROTO_CONST("RTMPTE", CURLPROTO_RTMPTE);
332
+ RB_DEFINE_M_PROTO_CONST("RTMPTS", CURLPROTO_RTMPTS);
333
+ RB_DEFINE_M_PROTO_CONST("RTSP", CURLPROTO_RTSP);
334
+ RB_DEFINE_M_PROTO_CONST("SCP", CURLPROTO_SCP);
335
+ RB_DEFINE_M_PROTO_CONST("SFTP", CURLPROTO_SFTP);
336
+ RB_DEFINE_M_PROTO_CONST("SMB", CURLPROTO_SMB);
337
+ RB_DEFINE_M_PROTO_CONST("SMBS", CURLPROTO_SMBS);
338
+ RB_DEFINE_M_PROTO_CONST("SMTP", CURLPROTO_SMTP);
339
+ RB_DEFINE_M_PROTO_CONST("SMTPS", CURLPROTO_SMTPS);
340
+ RB_DEFINE_M_PROTO_CONST("TELNET", CURLPROTO_TELNET);
341
+ RB_DEFINE_M_PROTO_CONST("TFTP", CURLPROTO_TFTP);
342
+
343
+ /* Curl::Proxy constants */
344
+ RB_DEFINE_M_PROXY_CONST("HTTP", CURLPROXY_HTTP);
345
+ RB_DEFINE_M_PROXY_CONST("HTTPS", CURLPROXY_HTTPS);
346
+ RB_DEFINE_M_PROXY_CONST("HTTP_1_0", CURLPROXY_HTTP_1_0);
347
+ RB_DEFINE_M_PROXY_CONST("SOCKS4", CURLPROXY_SOCKS4);
348
+ RB_DEFINE_M_PROXY_CONST("SOCKS4A", CURLPROXY_SOCKS4A);
349
+ RB_DEFINE_M_PROXY_CONST("SOCKS5", CURLPROXY_SOCKS5);
350
+ RB_DEFINE_M_PROXY_CONST("SOCKS5_HOSTNAME", CURLPROXY_SOCKS5_HOSTNAME);
351
+
352
+ /* Curl::Error constants */
353
+ RB_DEFINE_M_ERROR_CONST("OK", CURLE_OK);
354
+ RB_DEFINE_M_ERROR_CONST("UNSUPPORTED_PROTOCOL", CURLE_UNSUPPORTED_PROTOCOL);
355
+ RB_DEFINE_M_ERROR_CONST("FAILED_INIT", CURLE_FAILED_INIT);
356
+ RB_DEFINE_M_ERROR_CONST("URL_MALFORMAT", CURLE_URL_MALFORMAT);
357
+ RB_DEFINE_M_ERROR_CONST("NOT_BUILT_IN", CURLE_NOT_BUILT_IN);
358
+ RB_DEFINE_M_ERROR_CONST("COULDNT_RESOLVE_PROXY", CURLE_COULDNT_RESOLVE_PROXY);
359
+ RB_DEFINE_M_ERROR_CONST("COULDNT_RESOLVE_HOST", CURLE_COULDNT_RESOLVE_HOST);
360
+ RB_DEFINE_M_ERROR_CONST("COULDNT_CONNECT", CURLE_COULDNT_CONNECT);
361
+ RB_DEFINE_M_ERROR_CONST("REMOTE_ACCESS_DENIED", CURLE_REMOTE_ACCESS_DENIED);
362
+ RB_DEFINE_M_ERROR_CONST("HTTP2", CURLE_HTTP2);
363
+ RB_DEFINE_M_ERROR_CONST("HTTP_RETURNED_ERROR", CURLE_HTTP_RETURNED_ERROR);
364
+ RB_DEFINE_M_ERROR_CONST("WRITE_ERROR", CURLE_WRITE_ERROR);
365
+ RB_DEFINE_M_ERROR_CONST("UPLOAD_FAILED", CURLE_UPLOAD_FAILED);
366
+ RB_DEFINE_M_ERROR_CONST("READ_ERROR", CURLE_READ_ERROR);
367
+ RB_DEFINE_M_ERROR_CONST("OUT_OF_MEMORY", CURLE_OUT_OF_MEMORY);
368
+ RB_DEFINE_M_ERROR_CONST("OPERATION_TIMEDOUT", CURLE_OPERATION_TIMEDOUT);
369
+ RB_DEFINE_M_ERROR_CONST("RANGE_ERROR", CURLE_RANGE_ERROR);
370
+ RB_DEFINE_M_ERROR_CONST("HTTP_POST_ERROR", CURLE_HTTP_POST_ERROR);
371
+ RB_DEFINE_M_ERROR_CONST("SSL_CONNECT_ERROR", CURLE_SSL_CONNECT_ERROR);
372
+ RB_DEFINE_M_ERROR_CONST("BAD_DOWNLOAD_RESUME", CURLE_BAD_DOWNLOAD_RESUME);
373
+ RB_DEFINE_M_ERROR_CONST("FILE_COULDNT_READ_FILE", CURLE_FILE_COULDNT_READ_FILE);
374
+ RB_DEFINE_M_ERROR_CONST("FUNCTION_NOT_FOUND", CURLE_FUNCTION_NOT_FOUND);
375
+ RB_DEFINE_M_ERROR_CONST("ABORTED_BY_CALLBACK", CURLE_ABORTED_BY_CALLBACK);
376
+ RB_DEFINE_M_ERROR_CONST("BAD_FUNCTION_ARGUMENT", CURLE_BAD_FUNCTION_ARGUMENT);
377
+ RB_DEFINE_M_ERROR_CONST("INTERFACE_FAILED", CURLE_INTERFACE_FAILED);
378
+ RB_DEFINE_M_ERROR_CONST("TOO_MANY_REDIRECTS", CURLE_TOO_MANY_REDIRECTS);
379
+ RB_DEFINE_M_ERROR_CONST("UNKNOWN_OPTION", CURLE_UNKNOWN_OPTION);
380
+ RB_DEFINE_M_ERROR_CONST("GOT_NOTHING", CURLE_GOT_NOTHING);
381
+ RB_DEFINE_M_ERROR_CONST("SSL_ENGINE_NOTFOUND", CURLE_SSL_ENGINE_NOTFOUND);
382
+ RB_DEFINE_M_ERROR_CONST("SSL_ENGINE_SETFAILED", CURLE_SSL_ENGINE_SETFAILED);
383
+ RB_DEFINE_M_ERROR_CONST("SEND_ERROR", CURLE_SEND_ERROR);
384
+ RB_DEFINE_M_ERROR_CONST("RECV_ERROR", CURLE_RECV_ERROR);
385
+ RB_DEFINE_M_ERROR_CONST("SSL_CERTPROBLEM", CURLE_SSL_CERTPROBLEM);
386
+ RB_DEFINE_M_ERROR_CONST("SSL_CIPHER", CURLE_SSL_CIPHER);
387
+ RB_DEFINE_M_ERROR_CONST("PEER_FAILED_VERIFICATION", CURLE_PEER_FAILED_VERIFICATION);
388
+ RB_DEFINE_M_ERROR_CONST("BAD_CONTENT_ENCODING", CURLE_BAD_CONTENT_ENCODING);
389
+ RB_DEFINE_M_ERROR_CONST("FILESIZE_EXCEEDED", CURLE_FILESIZE_EXCEEDED);
390
+ RB_DEFINE_M_ERROR_CONST("SEND_FAIL_REWIND", CURLE_SEND_FAIL_REWIND);
391
+ RB_DEFINE_M_ERROR_CONST("SSL_ENGINE_INITFAILED", CURLE_SSL_ENGINE_INITFAILED);
392
+ RB_DEFINE_M_ERROR_CONST("LOGIN_DENIED", CURLE_LOGIN_DENIED);
393
+ RB_DEFINE_M_ERROR_CONST("SSL_CACERT_BADFILE", CURLE_SSL_CACERT_BADFILE);
394
+ RB_DEFINE_M_ERROR_CONST("AGAIN", CURLE_AGAIN);
395
+ RB_DEFINE_M_ERROR_CONST("SSL_CRL_BADFILE", CURLE_SSL_CRL_BADFILE);
396
+ RB_DEFINE_M_ERROR_CONST("SSL_ISSUER_ERROR", CURLE_SSL_ISSUER_ERROR);
397
+ RB_DEFINE_M_ERROR_CONST("CHUNK_FAILED", CURLE_CHUNK_FAILED);
398
+ RB_DEFINE_M_ERROR_CONST("HTTP2_STREAM", CURLE_HTTP2_STREAM);
399
+
400
+ Init_easy();
401
+ Init_multi();
402
+ }
data/ext/curl.h ADDED
@@ -0,0 +1,37 @@
1
+ #ifndef RUBY_CURL_H
2
+ #define RUBY_CURL_H
3
+
4
+ #include <ruby.h>
5
+ #include <curl/curl.h>
6
+
7
+ #include "easy.h"
8
+
9
+ #define RB_DEFINE_M_CURL_CONST(name, curl_const_name) \
10
+ rb_define_const(rb_mCurl, name, LONG2NUM(curl_const_name))
11
+
12
+ #define RB_DEFINE_M_OPT_CONST(name, curl_opt_name) \
13
+ rb_define_const(rb_mOpt, name, LONG2NUM(curl_opt_name))
14
+
15
+ #define RB_DEFINE_M_MOPT_CONST(name, curl_mopt_name) \
16
+ rb_define_const(rb_mMOpt, name, LONG2NUM(curl_mopt_name))
17
+
18
+ #define RB_DEFINE_M_INFO_CONST(name, curl_info_name) \
19
+ rb_define_const(rb_mInfo, name, LONG2NUM(curl_info_name))
20
+
21
+ #define RB_DEFINE_M_PROXY_CONST(name, curl_proxy_name) \
22
+ rb_define_const(rb_mProxy, name, LONG2NUM(curl_proxy_name))
23
+
24
+ #define RB_DEFINE_M_AUTH_CONST(name, curl_auth_name) \
25
+ rb_define_const(rb_mAuth, name, LONG2NUM(curl_auth_name))
26
+
27
+ #define RB_DEFINE_M_PROTO_CONST(name, curl_proto_name) \
28
+ rb_define_const(rb_mProto, name, LONG2NUM(curl_proto_name))
29
+
30
+ #define RB_DEFINE_M_ERROR_CONST(name, curl_error_name) \
31
+ rb_define_const(rb_mError, name, LONG2NUM(curl_error_name))
32
+
33
+ extern VALUE rb_mCurl;
34
+
35
+ void Init_curl();
36
+
37
+ #endif