rest 2.6.0 → 2.6.1
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 +4 -4
- data/Gemfile.lock +10 -10
- data/lib/rest.rb +15 -0
- data/lib/rest/client.rb +49 -21
- data/lib/rest/errors.rb +7 -9
- data/lib/rest/version.rb +1 -1
- data/lib/rest/wrappers/excon_wrapper.rb +2 -2
- data/lib/rest/wrappers/net_http_persistent_wrapper.rb +4 -4
- data/lib/rest/wrappers/rest_client_wrapper.rb +1 -1
- data/lib/rest/wrappers/typhoeus_wrapper.rb +1 -1
- data/rest.gemspec +1 -1
- data/test/test_base.rb +1 -1
- data/test/test_rest.rb +2 -2
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1afdece56690dfa86347a2d7bd953644e8b8d32
|
4
|
+
data.tar.gz: 281bc6cbbdf47f459525e393453d8fb901789da1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: affe77b4760847ba758fe5f671fdcd05676d6046c70a58fa6f7258e32f1e336abb38154056a3f3d455eddc2333075dd59893bd1ed2d74b91c34ae42bfbec93b1
|
7
|
+
data.tar.gz: 28e8c4852078a9f5d4788fb52a66604837c047e41cae072781737a32a67274ffc21a0e683446ad803a4fc48b405d2b0b4bda612c850f69ef2008668e2f938366
|
data/Gemfile.lock
CHANGED
@@ -2,26 +2,27 @@ PATH
|
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
4
|
rest (2.6.0)
|
5
|
+
net-http-persistent
|
5
6
|
rest-client (>= 0.3.0)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
9
10
|
specs:
|
10
|
-
ethon (0.5.
|
11
|
-
ffi (
|
11
|
+
ethon (0.5.12)
|
12
|
+
ffi (>= 1.3.0)
|
12
13
|
mime-types (~> 1.18)
|
13
|
-
excon (0.
|
14
|
-
ffi (1.
|
15
|
-
mime-types (1.
|
16
|
-
minitest (
|
14
|
+
excon (0.21.0)
|
15
|
+
ffi (1.8.1)
|
16
|
+
mime-types (1.23)
|
17
|
+
minitest (5.0.0)
|
17
18
|
net-http-persistent (2.8)
|
18
19
|
quicky (0.4.0)
|
19
|
-
rake (10.0.
|
20
|
+
rake (10.0.4)
|
20
21
|
rest-client (1.6.7)
|
21
22
|
mime-types (>= 1.16)
|
22
23
|
test-unit (2.5.4)
|
23
|
-
typhoeus (0.6.
|
24
|
-
ethon (~> 0.5.
|
24
|
+
typhoeus (0.6.3)
|
25
|
+
ethon (~> 0.5.11)
|
25
26
|
uber_config (1.0.5)
|
26
27
|
|
27
28
|
PLATFORMS
|
@@ -30,7 +31,6 @@ PLATFORMS
|
|
30
31
|
DEPENDENCIES
|
31
32
|
excon
|
32
33
|
minitest
|
33
|
-
net-http-persistent
|
34
34
|
quicky (>= 0.4.0)
|
35
35
|
rake
|
36
36
|
rest!
|
data/lib/rest.rb
CHANGED
@@ -1 +1,16 @@
|
|
1
|
+
module Rest
|
2
|
+
def self.ruby_major
|
3
|
+
RUBY_VERSION.split('.')[0].to_i
|
4
|
+
end
|
5
|
+
def self.ruby_minor
|
6
|
+
RUBY_VERSION.split('.')[1].to_i
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
# 1.8 support
|
11
|
+
if Rest.ruby_major == 1 && Rest.ruby_minor == 8
|
12
|
+
require 'rubygems'
|
13
|
+
gem 'json'
|
14
|
+
end
|
15
|
+
|
1
16
|
require File.expand_path('rest/client', File.dirname(__FILE__))
|
data/lib/rest/client.rb
CHANGED
@@ -16,12 +16,35 @@ module Rest
|
|
16
16
|
|
17
17
|
require 'rest/wrappers/base_wrapper'
|
18
18
|
|
19
|
+
@@logger = Logger.new(STDOUT)
|
20
|
+
|
19
21
|
def self.logger=(logger)
|
20
|
-
|
22
|
+
@@logger = logger
|
21
23
|
end
|
22
24
|
|
23
25
|
def self.logger()
|
24
|
-
|
26
|
+
@@logger
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
class BackingGem
|
31
|
+
attr_accessor :name, :gem_name
|
32
|
+
|
33
|
+
def initialize(name, gem_name)
|
34
|
+
@name = name
|
35
|
+
@gem_name = gem_name
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
# setup metadata about backing gem options
|
41
|
+
@@backing_gems = {}
|
42
|
+
@@backing_gems[:typhoeus] = BackingGem.new(:typhoeus, 'typhoeus')
|
43
|
+
@@backing_gems[:rest_client] = BackingGem.new(:rest_client, 'rest_client')
|
44
|
+
@@backing_gems[:net_http_persistent] = BackingGem.new(:net_http_persistent, 'net/http/persistent')
|
45
|
+
|
46
|
+
def self.backing_gems
|
47
|
+
@@backing_gems
|
25
48
|
end
|
26
49
|
|
27
50
|
class Client
|
@@ -32,10 +55,8 @@ module Rest
|
|
32
55
|
#
|
33
56
|
def initialize(options={})
|
34
57
|
@options = options
|
35
|
-
|
36
|
-
@logger =
|
37
|
-
@logger.level = options[:log_level] || Logger::INFO
|
38
|
-
Rest.logger = @logger
|
58
|
+
|
59
|
+
@logger = Rest.logger
|
39
60
|
|
40
61
|
@gem = options[:gem] if options[:gem]
|
41
62
|
|
@@ -57,30 +78,37 @@ module Rest
|
|
57
78
|
@logger.debug "Using net-http-persistent gem."
|
58
79
|
else
|
59
80
|
@wrapper = Rest::Wrappers::RestClientWrapper.new
|
60
|
-
hint = (options[:gem] ? "" : "
|
81
|
+
hint = (options[:gem] ? "" : "NOTICE: Please install 'typhoeus' gem or upgrade to Ruby 2.X for optimal performance.")
|
61
82
|
puts hint
|
62
|
-
@logger.debug "Using rest-client gem
|
83
|
+
@logger.debug "Using rest-client gem. #{hint}"
|
63
84
|
end
|
64
85
|
end
|
65
86
|
|
66
87
|
def choose_best_gem
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
88
|
+
gems_to_try = []
|
89
|
+
#puts "Ruby MAJOR: #{Rest.ruby_major}"
|
90
|
+
if Rest.ruby_major >= 2
|
91
|
+
gems_to_try << :net_http_persistent
|
92
|
+
gems_to_try << :typhoeus
|
93
|
+
gems_to_try << :rest_client
|
94
|
+
else
|
95
|
+
# net-http-persistent has issues with ssl and keep-alive connections on ruby < 1.9.3p327
|
96
|
+
gems_to_try << :typhoeus
|
97
|
+
gems_to_try << :rest_client
|
98
|
+
end
|
99
|
+
gems_to_try.each_with_index do |g, i|
|
100
|
+
bg = Rest.backing_gems[g]
|
72
101
|
begin
|
73
|
-
|
74
|
-
|
75
|
-
@gem
|
102
|
+
require bg.gem_name
|
103
|
+
@gem = bg.name
|
104
|
+
return @gem
|
76
105
|
rescue LoadError => ex
|
77
|
-
|
106
|
+
if (i+1) >= gems_to_try.length
|
107
|
+
raise ex
|
108
|
+
end
|
109
|
+
@logger.debug "LoadError on #{bg.name}, trying #{Rest.backing_gems[gems_to_try[i+1]].name}..."
|
78
110
|
end
|
79
111
|
end
|
80
|
-
if @gem.nil?
|
81
|
-
require 'rest_client'
|
82
|
-
@gem = :rest_client
|
83
|
-
end
|
84
112
|
end
|
85
113
|
|
86
114
|
def get(url, req_hash={})
|
data/lib/rest/errors.rb
CHANGED
@@ -7,16 +7,14 @@ module Rest
|
|
7
7
|
end
|
8
8
|
|
9
9
|
class HttpError < RestError
|
10
|
-
|
11
|
-
|
12
|
-
@response = response
|
13
|
-
end
|
10
|
+
attr_reader :response, :code
|
11
|
+
attr_accessor :options
|
14
12
|
|
15
|
-
def response
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
def initialize(response, code, options={})
|
14
|
+
super("#{code} Error")
|
15
|
+
@response = response
|
16
|
+
@code = code
|
17
|
+
@options = options
|
20
18
|
end
|
21
19
|
|
22
20
|
def to_s
|
data/lib/rest/version.rb
CHANGED
@@ -63,7 +63,7 @@ module Rest
|
|
63
63
|
r2 = conn.request(req_hash)
|
64
64
|
response = ExconResponseWrapper.new(r2)
|
65
65
|
if response.code >= 400
|
66
|
-
raise HttpError.new(response)
|
66
|
+
raise HttpError.new(response, response.code)
|
67
67
|
end
|
68
68
|
response
|
69
69
|
end
|
@@ -76,7 +76,7 @@ module Rest
|
|
76
76
|
to_json_parts(req_hash)
|
77
77
|
response = excon_request(url, req_hash)
|
78
78
|
rescue RestClient::Exception => ex
|
79
|
-
raise HttpError.new(ex)
|
79
|
+
raise HttpError.new(ex.response, ex.http_code)
|
80
80
|
end
|
81
81
|
response
|
82
82
|
end
|
@@ -93,7 +93,7 @@ module Rest
|
|
93
93
|
r = NetHttpPersistentResponseWrapper.new(response)
|
94
94
|
case response
|
95
95
|
when Net::HTTPClientError, Net::HTTPServerError
|
96
|
-
raise Rest::HttpError.new(r)
|
96
|
+
raise Rest::HttpError.new(r, r.code.to_i)
|
97
97
|
end
|
98
98
|
# when Net::HTTPRedirection
|
99
99
|
# @client.logger.debug "moved to #{response['location']}"
|
@@ -143,7 +143,7 @@ module Rest
|
|
143
143
|
r = NetHttpPersistentResponseWrapper.new(response)
|
144
144
|
case response
|
145
145
|
when Net::HTTPClientError, Net::HTTPServerError
|
146
|
-
raise Rest::HttpError.new(r)
|
146
|
+
raise Rest::HttpError.new(r, r.code.to_i)
|
147
147
|
end
|
148
148
|
r
|
149
149
|
end
|
@@ -167,7 +167,7 @@ module Rest
|
|
167
167
|
r = NetHttpPersistentResponseWrapper.new(response)
|
168
168
|
case response
|
169
169
|
when Net::HTTPClientError, Net::HTTPServerError
|
170
|
-
raise Rest::HttpError.new(r)
|
170
|
+
raise Rest::HttpError.new(r, r.code.to_i)
|
171
171
|
end
|
172
172
|
r
|
173
173
|
end
|
@@ -183,7 +183,7 @@ module Rest
|
|
183
183
|
r = NetHttpPersistentResponseWrapper.new(response)
|
184
184
|
case response
|
185
185
|
when Net::HTTPClientError, Net::HTTPServerError
|
186
|
-
raise Rest::HttpError.new(r)
|
186
|
+
raise Rest::HttpError.new(r, r.code.to_i)
|
187
187
|
end
|
188
188
|
r
|
189
189
|
end
|
data/rest.gemspec
CHANGED
@@ -17,9 +17,9 @@ 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
21
|
|
21
22
|
gem.add_development_dependency "typhoeus", ">= 0.5.4"
|
22
|
-
gem.add_development_dependency "net-http-persistent"
|
23
23
|
gem.add_development_dependency "test-unit"
|
24
24
|
gem.add_development_dependency "minitest"
|
25
25
|
gem.add_development_dependency "rake"
|
data/test/test_base.rb
CHANGED
data/test/test_rest.rb
CHANGED
@@ -16,7 +16,7 @@ class TestRest < TestBase
|
|
16
16
|
p response.code
|
17
17
|
assert response.code == 200
|
18
18
|
p response.body
|
19
|
-
assert response.body.include?("Explore
|
19
|
+
assert response.body.include?("Explore")
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_backoff
|
@@ -69,7 +69,7 @@ class TestRest < TestBase
|
|
69
69
|
assert ex.is_a?(Rest::HttpError)
|
70
70
|
assert ex.response
|
71
71
|
assert ex.response.body
|
72
|
-
|
72
|
+
assert_equal 404, ex.code
|
73
73
|
assert ex.response.body.include?("404")
|
74
74
|
assert ex.to_s.include?("404")
|
75
75
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -25,33 +25,33 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: net-http-persistent
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
34
|
-
type: :
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: typhoeus
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.5.4
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.5.4
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: test-unit
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
182
|
version: 1.3.6
|
183
183
|
requirements: []
|
184
184
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.0.
|
185
|
+
rubygems_version: 2.0.3
|
186
186
|
signing_key:
|
187
187
|
specification_version: 4
|
188
188
|
summary: Rest client wrapper that chooses best installed client.
|