rest 2.2.0 → 2.5.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 +7 -0
- data/Gemfile.lock +11 -11
- data/README.md +2 -2
- data/lib/rest.rb +1 -1
- data/lib/rest/client.rb +7 -6
- data/lib/rest/version.rb +1 -1
- data/lib/rest/wrappers/typhoeus_wrapper.rb +10 -6
- data/rest.gemspec +2 -2
- data/test/test_base.rb +1 -1
- data/test/test_performance.rb +3 -4
- data/test/test_rest.rb +9 -2
- metadata +35 -55
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f8cbb0a7cbd9c37659715c57e9703664a550072a
|
4
|
+
data.tar.gz: 190a2eb2c0705d4c7cf5e8ca2934f93a35d7b12f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e9c3e1dc1b074afab232bc522893f95a787ad467e7059edc1e5f819a0e9097f10a301fd6490ff921d3c943b64d5869e9f7307ee3959b2c833b361f5c26f48a07
|
7
|
+
data.tar.gz: a13e0091460d92d9e0e9ede4f03e6aaba55e0841b3861dbe942ef6ccdb38513c7712413ed0f3de0c047608e0bf985d2b3cdbdbf30dfd04a280fe502d29fa78cf
|
data/Gemfile.lock
CHANGED
@@ -2,27 +2,27 @@ PATH
|
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
4
|
rest (2.2.0)
|
5
|
-
net-http-persistent
|
6
5
|
rest-client (>= 0.3.0)
|
6
|
+
typhoeus (>= 0.5.4)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
ethon (0.5.
|
12
|
-
ffi (~> 1.
|
11
|
+
ethon (0.5.10)
|
12
|
+
ffi (~> 1.3.0)
|
13
13
|
mime-types (~> 1.18)
|
14
|
-
excon (0.
|
15
|
-
ffi (1.
|
16
|
-
mime-types (1.
|
17
|
-
minitest (4.
|
14
|
+
excon (0.20.0)
|
15
|
+
ffi (1.3.1)
|
16
|
+
mime-types (1.21)
|
17
|
+
minitest (4.6.2)
|
18
18
|
net-http-persistent (2.8)
|
19
19
|
quicky (0.4.0)
|
20
20
|
rake (10.0.3)
|
21
21
|
rest-client (1.6.7)
|
22
22
|
mime-types (>= 1.16)
|
23
|
-
test-unit (2.5.
|
24
|
-
typhoeus (0.
|
25
|
-
ethon (~> 0.5.
|
23
|
+
test-unit (2.5.4)
|
24
|
+
typhoeus (0.6.2)
|
25
|
+
ethon (~> 0.5.10)
|
26
26
|
uber_config (1.0.5)
|
27
27
|
|
28
28
|
PLATFORMS
|
@@ -31,9 +31,9 @@ PLATFORMS
|
|
31
31
|
DEPENDENCIES
|
32
32
|
excon
|
33
33
|
minitest
|
34
|
+
net-http-persistent
|
34
35
|
quicky (>= 0.4.0)
|
35
36
|
rake
|
36
37
|
rest!
|
37
38
|
test-unit
|
38
|
-
typhoeus (>= 0.5.4)
|
39
39
|
uber_config
|
data/README.md
CHANGED
data/lib/rest.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require 'rest/client'
|
1
|
+
require File.expand_path('rest/client', File.dirname(__FILE__))
|
data/lib/rest/client.rb
CHANGED
@@ -34,7 +34,7 @@ module Rest
|
|
34
34
|
@options = options
|
35
35
|
# todo: initialize this as module variable above
|
36
36
|
@logger = Logger.new(STDOUT)
|
37
|
-
@logger.level = Logger::INFO
|
37
|
+
@logger.level = options[:log_level] || Logger::INFO
|
38
38
|
Rest.logger = @logger
|
39
39
|
|
40
40
|
@gem = options[:gem] if options[:gem]
|
@@ -44,15 +44,15 @@ module Rest
|
|
44
44
|
end
|
45
45
|
|
46
46
|
if @gem == :excon
|
47
|
-
require '
|
47
|
+
require File.expand_path('wrappers/excon_wrapper', File.dirname(__FILE__))
|
48
48
|
@wrapper = Rest::Wrappers::ExconWrapper.new(self)
|
49
49
|
@logger.debug "Using excon gem."
|
50
50
|
elsif @gem == :typhoeus
|
51
|
-
require '
|
51
|
+
require File.expand_path('wrappers/typhoeus_wrapper', File.dirname(__FILE__))
|
52
52
|
@wrapper = Rest::Wrappers::TyphoeusWrapper.new
|
53
53
|
@logger.debug "Using typhoeus gem."
|
54
54
|
elsif @gem == :net_http_persistent
|
55
|
-
require '
|
55
|
+
require File.expand_path('wrappers/net_http_persistent_wrapper', File.dirname(__FILE__))
|
56
56
|
@wrapper = Rest::Wrappers::NetHttpPersistentWrapper.new(self)
|
57
57
|
@logger.debug "Using net-http-persistent gem."
|
58
58
|
else
|
@@ -64,7 +64,6 @@ module Rest
|
|
64
64
|
|
65
65
|
def choose_best_gem
|
66
66
|
begin
|
67
|
-
raise LoadError
|
68
67
|
require 'typhoeus'
|
69
68
|
@gem = :typhoeus
|
70
69
|
rescue LoadError => ex
|
@@ -73,6 +72,7 @@ module Rest
|
|
73
72
|
require 'net/http/persistent'
|
74
73
|
@gem = :net_http_persistent
|
75
74
|
rescue LoadError => ex
|
75
|
+
raise ex
|
76
76
|
end
|
77
77
|
end
|
78
78
|
if @gem.nil?
|
@@ -97,13 +97,14 @@ module Rest
|
|
97
97
|
max_retries = options[:max_retries] || 5
|
98
98
|
max_follows = options[:max_follows] || 10
|
99
99
|
if options[:follow_count] && options[:follow_count] >= max_follows
|
100
|
-
raise Rest::RestError "Too many follows. #{options[:follow_count]}"
|
100
|
+
raise Rest::RestError, "Too many follows. #{options[:follow_count]}"
|
101
101
|
end
|
102
102
|
current_retry = 0
|
103
103
|
current_follow = 0
|
104
104
|
success = false
|
105
105
|
tries = 0
|
106
106
|
res = nil
|
107
|
+
# todo: typhoeus does retries in the library so it shouldn't do retries here. And we should use the max_retries here as a parameter to typhoeus
|
107
108
|
while current_retry < max_retries && current_follow < max_follows do
|
108
109
|
tries += 1
|
109
110
|
begin
|
data/lib/rest/version.rb
CHANGED
@@ -39,7 +39,8 @@ module Rest
|
|
39
39
|
req_hash[:connecttimeout] = 5000
|
40
40
|
req_hash[:timeout] = 10000
|
41
41
|
req_hash[:followlocation] = true
|
42
|
-
req_hash[:maxredirs] =
|
42
|
+
req_hash[:maxredirs] = 3
|
43
|
+
req_hash[:accept_encoding] = 'gzip'
|
43
44
|
req_hash
|
44
45
|
end
|
45
46
|
|
@@ -53,14 +54,17 @@ module Rest
|
|
53
54
|
end
|
54
55
|
|
55
56
|
def handle_response(response)
|
56
|
-
if response.timed_out?
|
57
|
-
raise TyphoeusTimeoutError.new(response)
|
58
|
-
end
|
59
57
|
r = TyphoeusResponseWrapper.new(response)
|
60
|
-
if response.
|
58
|
+
if response.success?
|
59
|
+
return r
|
60
|
+
elsif response.timed_out?
|
61
|
+
raise TyphoeusTimeoutError.new(response)
|
62
|
+
elsif response.code == 0
|
63
|
+
# Could not get an http response, something's wrong.
|
64
|
+
raise Rest::RestError.new("Could not get a response. Curl error 0.")
|
65
|
+
else
|
61
66
|
raise Rest::HttpError.new(r)
|
62
67
|
end
|
63
|
-
r
|
64
68
|
end
|
65
69
|
|
66
70
|
def post(url, req_hash={})
|
data/rest.gemspec
CHANGED
@@ -17,13 +17,13 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.required_rubygems_version = ">= 1.3.6"
|
18
18
|
gem.required_ruby_version = Gem::Requirement.new(">= 1.8")
|
19
19
|
gem.add_runtime_dependency "rest-client", ">= 0.3.0"
|
20
|
-
gem.add_runtime_dependency "
|
20
|
+
gem.add_runtime_dependency "typhoeus", ">= 0.5.4"
|
21
21
|
|
22
|
+
gem.add_development_dependency "net-http-persistent"
|
22
23
|
gem.add_development_dependency "test-unit"
|
23
24
|
gem.add_development_dependency "minitest"
|
24
25
|
gem.add_development_dependency "rake"
|
25
26
|
gem.add_development_dependency "uber_config"
|
26
|
-
gem.add_development_dependency "typhoeus", ">= 0.5.4"
|
27
27
|
gem.add_development_dependency "quicky", ">= 0.4.0"
|
28
28
|
gem.add_development_dependency "excon"
|
29
29
|
|
data/test/test_base.rb
CHANGED
data/test/test_performance.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'yaml'
|
3
3
|
require 'quicky'
|
4
|
-
|
5
|
-
require 'test_base'
|
4
|
+
require File.expand_path('test_base', File.dirname(__FILE__))
|
6
5
|
|
7
6
|
class TestPerformance < TestBase
|
8
7
|
def setup
|
@@ -13,11 +12,11 @@ class TestPerformance < TestBase
|
|
13
12
|
def test_get_performance
|
14
13
|
puts 'test_get_performance'
|
15
14
|
|
16
|
-
times =
|
15
|
+
times = 100
|
17
16
|
|
18
17
|
quicky = Quicky::Timer.new
|
19
18
|
|
20
|
-
to_run = [:typhoeus, :rest_client, :net_http_persistent
|
19
|
+
to_run = [:typhoeus, :rest_client, :net_http_persistent]
|
21
20
|
to_run.each do |gem|
|
22
21
|
run_perf(quicky, times, gem)
|
23
22
|
end
|
data/test/test_rest.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
4
|
require 'yaml'
|
5
|
-
require 'test_base'
|
5
|
+
require File.expand_path('test_base', File.dirname(__FILE__))
|
6
6
|
|
7
7
|
class TestRest < TestBase
|
8
8
|
def setup
|
@@ -158,7 +158,7 @@ class TestRest < TestBase
|
|
158
158
|
end
|
159
159
|
|
160
160
|
def test_form_post
|
161
|
-
r = @rest.post("http://
|
161
|
+
r = @rest.post("http://rest-test.iron.io/code/200", :params=>{:q => "Rick Astley"})
|
162
162
|
p r
|
163
163
|
end
|
164
164
|
|
@@ -174,5 +174,12 @@ class TestRest < TestBase
|
|
174
174
|
assert res.body.include?("items")
|
175
175
|
end
|
176
176
|
|
177
|
+
def test_bad_host
|
178
|
+
puts "test bad host"
|
179
|
+
# OpenDNS, YOU SUCK!
|
180
|
+
r = @rest.get("http://something-that-is-not-here.com", :params=>{:q => "Rick Astley"})
|
181
|
+
p r
|
182
|
+
end
|
183
|
+
|
177
184
|
end
|
178
185
|
|
metadata
CHANGED
@@ -1,158 +1,139 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.5.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Travis Reeder
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-03-20 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rest-client
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.3.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 0.3.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
28
|
+
name: typhoeus
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: 0.5.4
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: 0.5.4
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
42
|
+
name: net-http-persistent
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
56
|
+
name: test-unit
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
70
|
+
name: minitest
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
84
|
+
name: rake
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
98
|
+
name: uber_config
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0
|
103
|
+
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
|
-
version: 0
|
110
|
+
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: quicky
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - '>='
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: 0.4.0
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - '>='
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: 0.4.0
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: excon
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - '>='
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: '0'
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - '>='
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: '0'
|
158
139
|
description: Rest client wrapper that chooses best installed client.
|
@@ -184,27 +165,26 @@ files:
|
|
184
165
|
- test/tmp.rb
|
185
166
|
homepage: https://github.com/iron-io/rest
|
186
167
|
licenses: []
|
168
|
+
metadata: {}
|
187
169
|
post_install_message:
|
188
170
|
rdoc_options: []
|
189
171
|
require_paths:
|
190
172
|
- lib
|
191
173
|
required_ruby_version: !ruby/object:Gem::Requirement
|
192
|
-
none: false
|
193
174
|
requirements:
|
194
|
-
- -
|
175
|
+
- - '>='
|
195
176
|
- !ruby/object:Gem::Version
|
196
177
|
version: '1.8'
|
197
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
|
-
none: false
|
199
179
|
requirements:
|
200
|
-
- -
|
180
|
+
- - '>='
|
201
181
|
- !ruby/object:Gem::Version
|
202
182
|
version: 1.3.6
|
203
183
|
requirements: []
|
204
184
|
rubyforge_project:
|
205
|
-
rubygems_version:
|
185
|
+
rubygems_version: 2.0.0
|
206
186
|
signing_key:
|
207
|
-
specification_version:
|
187
|
+
specification_version: 4
|
208
188
|
summary: Rest client wrapper that chooses best installed client.
|
209
189
|
test_files:
|
210
190
|
- test/test_base.rb
|