curb 0.7.15 → 0.7.16
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/README +4 -0
- data/Rakefile +7 -3
- data/ext/curb.c +591 -0
- data/ext/curb.h +3 -3
- data/ext/curb_easy.c +261 -379
- data/ext/curb_easy.h +1 -0
- data/ext/curb_errors.c +8 -0
- data/ext/curb_macros.h +4 -0
- data/ext/curb_multi.c +26 -11
- data/ext/extconf.rb +212 -3
- data/lib/curb.rb +2 -307
- data/lib/curl/easy.rb +385 -0
- data/lib/curl/multi.rb +244 -0
- data/tests/bug_crash_on_debug.rb +33 -0
- data/tests/tc_curl_easy.rb +56 -8
- data/tests/tc_curl_easy_setopt.rb +31 -0
- metadata +31 -41
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
|
2
|
+
require 'webrick'
|
3
|
+
class ::WEBrick::HTTPServer ; def access_log(config, req, res) ; end ; end
|
4
|
+
class ::WEBrick::BasicLog ; def log(level, data) ; end ; end
|
5
|
+
|
6
|
+
class BugCrashOnDebug < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_on_debug
|
9
|
+
server = WEBrick::HTTPServer.new( :Port => 9999 )
|
10
|
+
server.mount_proc("/test") do|req,res|
|
11
|
+
res.body = "hi"
|
12
|
+
res['Content-Type'] = "text/html"
|
13
|
+
end
|
14
|
+
|
15
|
+
thread = Thread.new(server) do|srv|
|
16
|
+
srv.start
|
17
|
+
end
|
18
|
+
|
19
|
+
c = Curl::Easy.new('http://localhost:9999/test')
|
20
|
+
c.on_progress do|x|
|
21
|
+
raise "error"
|
22
|
+
end
|
23
|
+
c.easy.on_debug { |type, data| puts "debug: #{type.inspect}, #{data.inspect}" }
|
24
|
+
c.perform
|
25
|
+
|
26
|
+
rescue => e
|
27
|
+
assert_equal 'Curl::Err::AbortedByCallbackError', e.class.to_s
|
28
|
+
c.close
|
29
|
+
ensure
|
30
|
+
puts "shutdown server"
|
31
|
+
server.shutdown
|
32
|
+
end
|
33
|
+
end
|
data/tests/tc_curl_easy.rb
CHANGED
@@ -461,7 +461,8 @@ class TestCurbCurlEasy < Test::Unit::TestCase
|
|
461
461
|
def test_ssl_verify_host
|
462
462
|
c = Curl::Easy.new
|
463
463
|
assert c.ssl_verify_host?
|
464
|
-
|
464
|
+
c.ssl_verify_host = 0
|
465
|
+
c.ssl_verify_host = false
|
465
466
|
assert !c.ssl_verify_host?
|
466
467
|
end
|
467
468
|
|
@@ -507,6 +508,17 @@ class TestCurbCurlEasy < Test::Unit::TestCase
|
|
507
508
|
assert c.ignore_content_length?
|
508
509
|
end
|
509
510
|
|
511
|
+
def test_resolve_mode
|
512
|
+
c = Curl::Easy.new
|
513
|
+
assert c.resolve_mode == :auto
|
514
|
+
c.resolve_mode = :ipv4
|
515
|
+
assert c.resolve_mode == :ipv4
|
516
|
+
c.resolve_mode = :ipv6
|
517
|
+
assert c.resolve_mode == :ipv6
|
518
|
+
|
519
|
+
assert_raises(ArgumentError) { c.resolve_mode = :bad }
|
520
|
+
end
|
521
|
+
|
510
522
|
def test_enable_cookies
|
511
523
|
c = Curl::Easy.new
|
512
524
|
assert !c.enable_cookies?
|
@@ -572,13 +584,20 @@ class TestCurbCurlEasy < Test::Unit::TestCase
|
|
572
584
|
def test_post_remote_is_easy_handle
|
573
585
|
# see: http://pastie.org/560852 and
|
574
586
|
# http://groups.google.com/group/curb---ruby-libcurl-bindings/browse_thread/thread/216bb2d9b037f347?hl=en
|
575
|
-
[:post, :get
|
576
|
-
|
577
|
-
|
578
|
-
count
|
579
|
-
|
587
|
+
[:post, :get, :head, :delete].each do |method|
|
588
|
+
retries = 0
|
589
|
+
begin
|
590
|
+
count = 0
|
591
|
+
curl = Curl::Easy.send("http_#{method}", TestServlet.url) do|c|
|
592
|
+
count += 1
|
593
|
+
assert_equal Curl::Easy, c.class
|
594
|
+
end
|
595
|
+
assert_equal 1, count, "For request method: #{method.to_s.upcase}"
|
596
|
+
rescue Curl::Err::HostResolutionError => e # travis-ci.org fails to resolve... try again?
|
597
|
+
retries+=1
|
598
|
+
retry if retries < 3
|
599
|
+
raise e
|
580
600
|
end
|
581
|
-
assert_equal 1, count, "For request method: #{method.to_s.upcase}"
|
582
601
|
end
|
583
602
|
end
|
584
603
|
|
@@ -700,7 +719,9 @@ class TestCurbCurlEasy < Test::Unit::TestCase
|
|
700
719
|
|
701
720
|
def test_cert_with_password
|
702
721
|
curl = Curl::Easy.new(TestServlet.url)
|
703
|
-
|
722
|
+
path = File.join(File.dirname(__FILE__),"cert.pem")
|
723
|
+
curl.certpassword = 'password'
|
724
|
+
curl.cert = path
|
704
725
|
assert_match /cert.pem$/,curl.cert
|
705
726
|
end
|
706
727
|
|
@@ -888,6 +909,33 @@ class TestCurbCurlEasy < Test::Unit::TestCase
|
|
888
909
|
|
889
910
|
end
|
890
911
|
|
912
|
+
def test_get_set_multi_on_easy
|
913
|
+
easy = Curl::Easy.new
|
914
|
+
assert_nil easy.multi
|
915
|
+
multi = Curl::Multi.new
|
916
|
+
easy.multi = multi
|
917
|
+
assert_not_nil easy.multi
|
918
|
+
assert_equal multi, easy.multi
|
919
|
+
end
|
920
|
+
|
921
|
+
def test_handle_exceptions_in_progress_callbacks
|
922
|
+
c = Curl::Easy.new($TEST_URL)
|
923
|
+
c.on_progress {|x| raise "error" }
|
924
|
+
c.perform
|
925
|
+
rescue => e
|
926
|
+
assert_equal 'Curl::Err::AbortedByCallbackError', e.class.to_s
|
927
|
+
c.close
|
928
|
+
end
|
929
|
+
|
930
|
+
def test_handle_exceptions_in_debug_callbacks
|
931
|
+
c = Curl::Easy.new($TEST_URL)
|
932
|
+
c.on_debug {|x| raise "error" }
|
933
|
+
c.perform
|
934
|
+
rescue => e
|
935
|
+
assert_equal 'Curl::Err::AbortedByCallbackError', e.class.to_s
|
936
|
+
c.close
|
937
|
+
end
|
938
|
+
|
891
939
|
include TestServerMethods
|
892
940
|
|
893
941
|
def setup
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
|
2
|
+
|
3
|
+
class TestCurbCurlEasySetOpt < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@easy = Curl::Easy.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_opt_verbose
|
9
|
+
@easy.set :verbose, true
|
10
|
+
assert @easy.verbose?
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_opt_header
|
14
|
+
@easy.set :header, true
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_opt_noprogress
|
18
|
+
@easy.set :noprogress, true
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_opt_nosignal
|
22
|
+
@easy.set :nosignal, true
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_opt_url
|
26
|
+
url = "http://google.com/"
|
27
|
+
@easy.set :url, url
|
28
|
+
assert_equal url, @easy.url
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
metadata
CHANGED
@@ -1,41 +1,36 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: curb
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.16
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 7
|
9
|
-
- 15
|
10
|
-
version: 0.7.15
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Ross Bamford
|
14
9
|
- Todd A. Fisher
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
date: 2011-03-20 00:00:00 -04:00
|
20
|
-
default_executable:
|
13
|
+
date: 2011-11-03 00:00:00.000000000 Z
|
21
14
|
dependencies: []
|
22
|
-
|
23
|
-
|
15
|
+
description: Curb (probably CUrl-RuBy or something) provides Ruby-language bindings
|
16
|
+
for the libcurl(3), a fully-featured client-side URL transfer library. cURL and
|
17
|
+
libcurl live at http://curl.haxx.se/
|
24
18
|
email: todd.fisher@gmail.com
|
25
19
|
executables: []
|
26
|
-
|
27
|
-
extensions:
|
20
|
+
extensions:
|
28
21
|
- ext/extconf.rb
|
29
|
-
extra_rdoc_files:
|
22
|
+
extra_rdoc_files:
|
30
23
|
- LICENSE
|
31
24
|
- README
|
32
|
-
files:
|
25
|
+
files:
|
33
26
|
- LICENSE
|
34
27
|
- README
|
35
28
|
- Rakefile
|
36
29
|
- doc.rb
|
37
30
|
- ext/extconf.rb
|
38
31
|
- lib/curb.rb
|
32
|
+
- lib/curl/easy.rb
|
33
|
+
- lib/curl/multi.rb
|
39
34
|
- lib/curl.rb
|
40
35
|
- ext/curb.c
|
41
36
|
- ext/curb_easy.c
|
@@ -51,6 +46,7 @@ files:
|
|
51
46
|
- ext/curb_postfield.h
|
52
47
|
- ext/curb_upload.h
|
53
48
|
- tests/alltests.rb
|
49
|
+
- tests/bug_crash_on_debug.rb
|
54
50
|
- tests/bug_curb_easy_blocks_ruby_threads.rb
|
55
51
|
- tests/bug_curb_easy_post_with_string_no_content_length_header.rb
|
56
52
|
- tests/bug_instance_post_differs_from_class_post.rb
|
@@ -64,49 +60,42 @@ files:
|
|
64
60
|
- tests/require_last_or_segfault_script.rb
|
65
61
|
- tests/tc_curl_download.rb
|
66
62
|
- tests/tc_curl_easy.rb
|
63
|
+
- tests/tc_curl_easy_setopt.rb
|
67
64
|
- tests/tc_curl_multi.rb
|
68
65
|
- tests/tc_curl_postfield.rb
|
69
66
|
- tests/timeout.rb
|
70
67
|
- tests/timeout_server.rb
|
71
68
|
- tests/unittests.rb
|
72
|
-
has_rdoc: true
|
73
69
|
homepage: http://curb.rubyforge.org/
|
74
70
|
licenses: []
|
75
|
-
|
76
71
|
post_install_message:
|
77
|
-
rdoc_options:
|
72
|
+
rdoc_options:
|
78
73
|
- --main
|
79
74
|
- README
|
80
|
-
require_paths:
|
75
|
+
require_paths:
|
81
76
|
- lib
|
82
77
|
- ext
|
83
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
79
|
none: false
|
85
|
-
requirements:
|
86
|
-
- -
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
|
89
|
-
|
90
|
-
- 0
|
91
|
-
version: "0"
|
92
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
85
|
none: false
|
94
|
-
requirements:
|
95
|
-
- -
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
|
98
|
-
segments:
|
99
|
-
- 0
|
100
|
-
version: "0"
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
101
90
|
requirements: []
|
102
|
-
|
103
91
|
rubyforge_project: curb
|
104
|
-
rubygems_version: 1.
|
92
|
+
rubygems_version: 1.8.10
|
105
93
|
signing_key:
|
106
94
|
specification_version: 3
|
107
95
|
summary: Ruby libcurl bindings
|
108
|
-
test_files:
|
96
|
+
test_files:
|
109
97
|
- tests/alltests.rb
|
98
|
+
- tests/bug_crash_on_debug.rb
|
110
99
|
- tests/bug_curb_easy_blocks_ruby_threads.rb
|
111
100
|
- tests/bug_curb_easy_post_with_string_no_content_length_header.rb
|
112
101
|
- tests/bug_instance_post_differs_from_class_post.rb
|
@@ -120,6 +109,7 @@ test_files:
|
|
120
109
|
- tests/require_last_or_segfault_script.rb
|
121
110
|
- tests/tc_curl_download.rb
|
122
111
|
- tests/tc_curl_easy.rb
|
112
|
+
- tests/tc_curl_easy_setopt.rb
|
123
113
|
- tests/tc_curl_multi.rb
|
124
114
|
- tests/tc_curl_postfield.rb
|
125
115
|
- tests/timeout.rb
|