taf2-curb 0.3.6.0 → 0.4.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.
- data/ext/curb.h +4 -4
- data/ext/curb_easy.c +31 -5
- data/ext/curb_multi.c +25 -3
- data/tests/tc_curl_easy.rb +15 -1
- data/tests/tc_curl_multi.rb +1 -1
- metadata +2 -2
data/ext/curb.h
CHANGED
@@ -20,11 +20,11 @@
|
|
20
20
|
#include "curb_macros.h"
|
21
21
|
|
22
22
|
// These should be managed from the Rake 'release' task.
|
23
|
-
#define CURB_VERSION "0.
|
24
|
-
#define CURB_VER_NUM
|
23
|
+
#define CURB_VERSION "0.4.0.0"
|
24
|
+
#define CURB_VER_NUM 400
|
25
25
|
#define CURB_VER_MAJ 0
|
26
|
-
#define CURB_VER_MIN
|
27
|
-
#define CURB_VER_MIC
|
26
|
+
#define CURB_VER_MIN 4
|
27
|
+
#define CURB_VER_MIC 0
|
28
28
|
#define CURB_VER_PATCH 0
|
29
29
|
|
30
30
|
|
data/ext/curb_easy.c
CHANGED
@@ -1629,7 +1629,7 @@ static VALUE handle_perform(VALUE self, ruby_curl_easy *rbce) {
|
|
1629
1629
|
if (result != 0) {
|
1630
1630
|
// printf("error: %s\n", errors);
|
1631
1631
|
if (rbce->failure_proc != Qnil) {
|
1632
|
-
rb_funcall( rbce->failure_proc, idCall,
|
1632
|
+
rb_funcall( rbce->failure_proc, idCall, 2, rbce->self, INT2FIX(result) );
|
1633
1633
|
} else {
|
1634
1634
|
raise_curl_easy_error_exception(result);
|
1635
1635
|
}
|
@@ -1641,7 +1641,7 @@ static VALUE handle_perform(VALUE self, ruby_curl_easy *rbce) {
|
|
1641
1641
|
}
|
1642
1642
|
else if (rbce->failure_proc != Qnil &&
|
1643
1643
|
(response_code >= 300 && response_code <= 999)) {
|
1644
|
-
rb_funcall( rbce->failure_proc, idCall,
|
1644
|
+
rb_funcall( rbce->failure_proc, idCall, 2, rbce->self, INT2FIX(result) );
|
1645
1645
|
}
|
1646
1646
|
|
1647
1647
|
return Qtrue;
|
@@ -1697,11 +1697,14 @@ static VALUE ruby_curl_easy_perform_delete(VALUE self) {
|
|
1697
1697
|
*
|
1698
1698
|
* Transfer the currently configured URL using the options set for this
|
1699
1699
|
* Curl::Easy instance. If this is an HTTP URL, it will be transferred via
|
1700
|
-
* the GET request method
|
1701
|
-
* when using HTTP URLs).
|
1700
|
+
* the GET or HEAD request method.
|
1702
1701
|
*/
|
1703
1702
|
static VALUE ruby_curl_easy_perform(VALUE self) {
|
1704
|
-
|
1703
|
+
ruby_curl_easy *rbce;
|
1704
|
+
|
1705
|
+
Data_Get_Struct(self, ruby_curl_easy, rbce);
|
1706
|
+
|
1707
|
+
return handle_perform(self,rbce);
|
1705
1708
|
}
|
1706
1709
|
|
1707
1710
|
/*
|
@@ -1803,6 +1806,28 @@ static VALUE ruby_curl_easy_perform_head(VALUE self) {
|
|
1803
1806
|
return handle_perform(self,rbce);
|
1804
1807
|
}
|
1805
1808
|
|
1809
|
+
/*
|
1810
|
+
*call-seq:
|
1811
|
+
* easy = Curl::Easy.new("url") do|c|
|
1812
|
+
* c.head = true
|
1813
|
+
* end
|
1814
|
+
* easy.perform
|
1815
|
+
*/
|
1816
|
+
static VALUE ruby_curl_easy_set_head_option(VALUE self, VALUE onoff) {
|
1817
|
+
ruby_curl_easy *rbce;
|
1818
|
+
|
1819
|
+
Data_Get_Struct(self, ruby_curl_easy, rbce);
|
1820
|
+
|
1821
|
+
if( onoff == Qtrue ) {
|
1822
|
+
curl_easy_setopt(rbce->curl, CURLOPT_NOBODY, 1);
|
1823
|
+
}
|
1824
|
+
else {
|
1825
|
+
curl_easy_setopt(rbce->curl, CURLOPT_NOBODY, 0);
|
1826
|
+
}
|
1827
|
+
|
1828
|
+
return onoff;
|
1829
|
+
}
|
1830
|
+
|
1806
1831
|
/*
|
1807
1832
|
* call-seq:
|
1808
1833
|
* easy.http_put(data) => true
|
@@ -2685,6 +2710,7 @@ void init_curb_easy() {
|
|
2685
2710
|
rb_define_method(cCurlEasy, "http_post", ruby_curl_easy_perform_post, -1);
|
2686
2711
|
rb_define_method(cCurlEasy, "http_head", ruby_curl_easy_perform_head, 0);
|
2687
2712
|
rb_define_method(cCurlEasy, "http_put", ruby_curl_easy_perform_put, 1);
|
2713
|
+
rb_define_method(cCurlEasy, "head=", ruby_curl_easy_set_head_option, 1);
|
2688
2714
|
|
2689
2715
|
/* Post-perform info methods */
|
2690
2716
|
rb_define_method(cCurlEasy, "body_str", ruby_curl_easy_body_str_get, 0);
|
data/ext/curb_multi.c
CHANGED
@@ -106,7 +106,28 @@ static VALUE ruby_curl_multi_max_connects(VALUE self, VALUE count) {
|
|
106
106
|
curl_multi_setopt(rbcm->handle, CURLMOPT_MAXCONNECTS, NUM2INT(count));
|
107
107
|
#endif
|
108
108
|
|
109
|
-
return
|
109
|
+
return count;
|
110
|
+
}
|
111
|
+
|
112
|
+
/*
|
113
|
+
* call-seq:
|
114
|
+
* multi = Curl::Multi.new
|
115
|
+
* multi.pipeline = true
|
116
|
+
*
|
117
|
+
* Pass a long set to 1 to enable or 0 to disable. Enabling pipelining on a multi handle will make it
|
118
|
+
* attempt to perform HTTP Pipelining as far as possible for transfers using this handle. This means
|
119
|
+
* that if you add a second request that can use an already existing connection, the second request will
|
120
|
+
* be "piped" on the same connection rather than being executed in parallel. (Added in 7.16.0)
|
121
|
+
*
|
122
|
+
*/
|
123
|
+
static VALUE ruby_curl_multi_pipeline(VALUE self, VALUE onoff) {
|
124
|
+
#ifdef HAVE_CURLMOPT_PIPELINING
|
125
|
+
ruby_curl_multi *rbcm;
|
126
|
+
|
127
|
+
Data_Get_Struct(self, ruby_curl_multi, rbcm);
|
128
|
+
curl_multi_setopt(rbcm->handle, CURLMOPT_PIPELINING, onoff == Qtrue ? 1 : 0);
|
129
|
+
#endif
|
130
|
+
return onoff;
|
110
131
|
}
|
111
132
|
|
112
133
|
/*
|
@@ -235,7 +256,7 @@ static void rb_curl_multi_read_info(VALUE self, CURLM *multi_handle) {
|
|
235
256
|
|
236
257
|
if (result != 0) {
|
237
258
|
if (rbce->failure_proc != Qnil) {
|
238
|
-
rb_funcall( rbce->failure_proc, idCall,
|
259
|
+
rb_funcall( rbce->failure_proc, idCall, 2, rbce->self, INT2FIX(result) );
|
239
260
|
}
|
240
261
|
}
|
241
262
|
else if (rbce->success_proc != Qnil &&
|
@@ -245,7 +266,7 @@ static void rb_curl_multi_read_info(VALUE self, CURLM *multi_handle) {
|
|
245
266
|
}
|
246
267
|
else if (rbce->failure_proc != Qnil &&
|
247
268
|
(response_code >= 300 && response_code <= 999)) {
|
248
|
-
rb_funcall( rbce->failure_proc, idCall,
|
269
|
+
rb_funcall( rbce->failure_proc, idCall, 2, rbce->self, INT2FIX(result) );
|
249
270
|
}
|
250
271
|
rbce->self = Qnil;
|
251
272
|
}
|
@@ -359,6 +380,7 @@ void init_curb_multi() {
|
|
359
380
|
|
360
381
|
/* Instnace methods */
|
361
382
|
rb_define_method(cCurlMulti, "max_connects=", ruby_curl_multi_max_connects, 1);
|
383
|
+
rb_define_method(cCurlMulti, "pipeline=", ruby_curl_multi_pipeline, 1);
|
362
384
|
rb_define_method(cCurlMulti, "add", ruby_curl_multi_add, 1);
|
363
385
|
rb_define_method(cCurlMulti, "remove", ruby_curl_multi_remove, 1);
|
364
386
|
rb_define_method(cCurlMulti, "perform", ruby_curl_multi_perform, 0);
|
data/tests/tc_curl_easy.rb
CHANGED
@@ -471,7 +471,7 @@ class TestCurbCurlEasy < Test::Unit::TestCase
|
|
471
471
|
curl = Curl::Easy.new("#{$TEST_URL.gsub(/file:\/\//,'')}/not_here")
|
472
472
|
on_failure_called = false
|
473
473
|
curl.on_success {|c| } # make sure we get the failure call even though this handler is defined
|
474
|
-
curl.on_failure {|c| on_failure_called = true }
|
474
|
+
curl.on_failure {|c,code| on_failure_called = true }
|
475
475
|
curl.perform
|
476
476
|
assert on_failure_called, "Failure handler not called"
|
477
477
|
end
|
@@ -504,6 +504,20 @@ class TestCurbCurlEasy < Test::Unit::TestCase
|
|
504
504
|
assert_match '/nonexistent', redirect[1]
|
505
505
|
end
|
506
506
|
|
507
|
+
def test_head_accessor
|
508
|
+
curl = Curl::Easy.new(TestServlet.url)
|
509
|
+
curl.head = true
|
510
|
+
curl.perform
|
511
|
+
|
512
|
+
redirect = curl.header_str.match(/Location: (.*)/)
|
513
|
+
|
514
|
+
assert_equal '', curl.body_str
|
515
|
+
assert_match '/nonexistent', redirect[1]
|
516
|
+
curl.head = false
|
517
|
+
curl.perform
|
518
|
+
assert_equal 'GET', curl.body_str
|
519
|
+
end
|
520
|
+
|
507
521
|
def test_put_remote
|
508
522
|
curl = Curl::Easy.new(TestServlet.url)
|
509
523
|
assert curl.http_put("message")
|
data/tests/tc_curl_multi.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taf2-curb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ross Bamford
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-06-
|
13
|
+
date: 2009-06-17 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|