taf2-curb 0.5.2.0 → 0.5.4.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 +3 -3
- data/ext/curb_easy.c +5 -1
- data/lib/curb.rb +32 -40
- data/tests/tc_curl_multi.rb +11 -0
- 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.5.
|
24
|
-
#define CURB_VER_NUM
|
23
|
+
#define CURB_VERSION "0.5.4.0"
|
24
|
+
#define CURB_VER_NUM 540
|
25
25
|
#define CURB_VER_MAJ 0
|
26
26
|
#define CURB_VER_MIN 5
|
27
|
-
#define CURB_VER_MIC
|
27
|
+
#define CURB_VER_MIC 4
|
28
28
|
#define CURB_VER_PATCH 0
|
29
29
|
|
30
30
|
|
data/ext/curb_easy.c
CHANGED
@@ -2599,13 +2599,17 @@ static VALUE ruby_curl_easy_inspect(VALUE self) {
|
|
2599
2599
|
* converted to their "URL escaped" version (%NN where NN is a
|
2600
2600
|
* two-digit hexadecimal number).
|
2601
2601
|
*/
|
2602
|
-
static VALUE ruby_curl_easy_escape(VALUE self, VALUE
|
2602
|
+
static VALUE ruby_curl_easy_escape(VALUE self, VALUE svalue) {
|
2603
2603
|
ruby_curl_easy *rbce;
|
2604
2604
|
char *result;
|
2605
2605
|
VALUE rresult;
|
2606
|
+
VALUE str = svalue;
|
2606
2607
|
|
2607
2608
|
Data_Get_Struct(self, ruby_curl_easy, rbce);
|
2608
2609
|
|
2610
|
+
/* NOTE: make sure the value is a string, if not call to_s */
|
2611
|
+
if( rb_type(str) != T_STRING ) { str = rb_funcall(str,rb_intern("to_s"),0); }
|
2612
|
+
|
2609
2613
|
#if (LIBCURL_VERSION_NUM >= 0x070f04)
|
2610
2614
|
result = (char*)curl_easy_escape(rbce->curl, StringValuePtr(str), RSTRING_LEN(str));
|
2611
2615
|
#else
|
data/lib/curb.rb
CHANGED
@@ -63,22 +63,11 @@ module Curl
|
|
63
63
|
#
|
64
64
|
# Blocking call to fetch multiple url's in parallel.
|
65
65
|
def get(urls, easy_options={}, multi_options={}, &blk)
|
66
|
-
|
67
|
-
# configure the multi handle
|
68
|
-
multi_options.each do|k,v|
|
69
|
-
m.send("#{k}=", v)
|
70
|
-
end
|
71
|
-
|
72
|
-
# create and configure each easy handle
|
66
|
+
url_confs = []
|
73
67
|
urls.each do|url|
|
74
|
-
|
75
|
-
easy_options.each do|k,v|
|
76
|
-
c.send("#{k}=",v)
|
77
|
-
end
|
78
|
-
c.on_complete {|curl| blk.call curl } if blk
|
79
|
-
m.add(c)
|
68
|
+
url_confs << {:url => url, :method => :get}.merge(easy_options)
|
80
69
|
end
|
81
|
-
|
70
|
+
self.http(url_confs, multi_options) {|c,code,method| blk.call(c) }
|
82
71
|
end
|
83
72
|
|
84
73
|
# call-seq:
|
@@ -97,36 +86,39 @@ module Curl
|
|
97
86
|
# easy_options: are a set of common options to set on all easy handles
|
98
87
|
# multi_options: options to set on the Curl::Multi handle
|
99
88
|
#
|
100
|
-
def post(urls_with_config, easy_options, multi_options, &blk)
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
m.send("#{k}=", v)
|
89
|
+
def post(urls_with_config, easy_options={}, multi_options={}, &blk)
|
90
|
+
url_confs = []
|
91
|
+
urls_with_config.each do|uconf|
|
92
|
+
url_confs << uconf.merge(:method => :post).merge(easy_options)
|
105
93
|
end
|
94
|
+
self.http(url_confs, multi_options) {|c,code,method| blk.call(c) }
|
95
|
+
end
|
106
96
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
97
|
+
# call-seq:
|
98
|
+
#
|
99
|
+
# Curl::Multi.put([{:url => 'url1', :put_data => "some message"},
|
100
|
+
# {:url => 'url2', :put_data => IO.read('filepath')},
|
101
|
+
# {:url => 'url3', :put_data => "maybe another string or socket?"],
|
102
|
+
# {:follow_location => true},
|
103
|
+
# {:pipeline => true }) do|easy|
|
104
|
+
# easy_handle_on_request_complete
|
105
|
+
# end
|
106
|
+
#
|
107
|
+
# Blocking call to POST multiple form's in parallel.
|
108
|
+
#
|
109
|
+
# urls_with_config: is a hash of url's pointing to the postfields to send
|
110
|
+
# easy_options: are a set of common options to set on all easy handles
|
111
|
+
# multi_options: options to set on the Curl::Multi handle
|
112
|
+
#
|
113
|
+
def put(urls_with_config, easy_options={}, multi_options={}, &blk)
|
114
|
+
url_confs = []
|
115
|
+
urls_with_config.each do|uconf|
|
116
|
+
url_confs << uconf.merge(:method => :put).merge(easy_options)
|
126
117
|
end
|
127
|
-
|
118
|
+
self.http(url_confs, multi_options) {|c,code,method| blk.call(c) }
|
128
119
|
end
|
129
120
|
|
121
|
+
|
130
122
|
# call-seq:
|
131
123
|
#
|
132
124
|
# Curl::Multi.http( [
|
@@ -144,7 +136,7 @@ module Curl
|
|
144
136
|
# multi_options: options for the multi handle
|
145
137
|
# blk: a callback, that yeilds when a handle is completed
|
146
138
|
#
|
147
|
-
def http(urls_with_config, multi_options, &blk)
|
139
|
+
def http(urls_with_config, multi_options={}, &blk)
|
148
140
|
m = Curl::Multi.new
|
149
141
|
# configure the multi handle
|
150
142
|
multi_options.each { |k,v| m.send("#{k}=", v) }
|
data/tests/tc_curl_multi.rb
CHANGED
@@ -325,6 +325,17 @@ class TestCurbCurlMulti < Test::Unit::TestCase
|
|
325
325
|
end
|
326
326
|
end
|
327
327
|
|
328
|
+
def test_multi_easy_put_01
|
329
|
+
urls = [{ :url => TestServlet.url, :method => :put, :put_data => "message",
|
330
|
+
:headers => {'Content-Type' => 'application/json' } },
|
331
|
+
{ :url => TestServlet.url, :method => :put, :put_data => "message",
|
332
|
+
:headers => {'Content-Type' => 'application/json' } }]
|
333
|
+
Curl::Multi.put(urls, {}, {:pipeline => true}) do|easy|
|
334
|
+
assert_match /PUT/, easy.body_str
|
335
|
+
assert_match /message/, easy.body_str
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
328
339
|
def test_multi_easy_http_01
|
329
340
|
urls = [
|
330
341
|
{ :url => TestServlet.url + '?q=1', :method => :post, :post_fields => {'field1' => 'value1', 'k' => 'j'}},
|
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.5.
|
4
|
+
version: 0.5.4.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-
|
13
|
+
date: 2009-09-23 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|