rest 2.2.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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.7)
12
- ffi (~> 1.2.0)
11
+ ethon (0.5.10)
12
+ ffi (~> 1.3.0)
13
13
  mime-types (~> 1.18)
14
- excon (0.16.10)
15
- ffi (1.2.1)
16
- mime-types (1.19)
17
- minitest (4.4.0)
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.3)
24
- typhoeus (0.5.4)
25
- ethon (~> 0.5.7)
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
@@ -36,8 +36,8 @@ To choose a specific underlying http client lib:
36
36
 
37
37
  Supported http libraries are:
38
38
 
39
- * rest-client
40
- * net-http-persistent
39
+ * rest_client
40
+ * net_http_persistent
41
41
  * typhoeus
42
42
 
43
43
  Then use it:
@@ -1 +1 @@
1
- require 'rest/client'
1
+ require File.expand_path('rest/client', File.dirname(__FILE__))
@@ -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 'rest/wrappers/excon_wrapper'
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 'rest/wrappers/typhoeus_wrapper'
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 'rest/wrappers/net_http_persistent_wrapper'
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
@@ -1,3 +1,3 @@
1
1
  module Rest
2
- VERSION = "2.2.0"
2
+ VERSION = "2.5.0"
3
3
  end
@@ -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] = 2
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.code >= 400
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={})
@@ -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 "net-http-persistent"
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
 
@@ -11,7 +11,7 @@ class TestBase < Test::Unit::TestCase
11
11
 
12
12
  def setup
13
13
  puts 'setup'
14
- @rest = Rest::Client.new(:gem => :net_http_persistent, :log_level=>Logger::DEBUG)
14
+ @rest = Rest::Client.new(:gem => :typhoeus, :log_level=>Logger::DEBUG)
15
15
 
16
16
  end
17
17
 
@@ -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 = 20
15
+ times = 100
17
16
 
18
17
  quicky = Quicky::Timer.new
19
18
 
20
- to_run = [:typhoeus, :rest_client, :net_http_persistent, :excon]
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
@@ -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://google.com/search", :params=>{:q => "Rick Astley"})
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.2.0
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-01-14 00:00:00.000000000 Z
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: net-http-persistent
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: '0'
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: '0'
40
+ version: 0.5.4
46
41
  - !ruby/object:Gem::Dependency
47
- name: test-unit
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: minitest
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: rake
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: uber_config
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: typhoeus
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.5.4
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.5.4
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: 1.8.24
185
+ rubygems_version: 2.0.0
206
186
  signing_key:
207
- specification_version: 3
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