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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f2c87b817f752f83b83d5109dbb13f6fa8147f9
4
- data.tar.gz: fed1199968e17dc999261c36e772741a3003e2c9
3
+ metadata.gz: f1afdece56690dfa86347a2d7bd953644e8b8d32
4
+ data.tar.gz: 281bc6cbbdf47f459525e393453d8fb901789da1
5
5
  SHA512:
6
- metadata.gz: 210627d380615bc20180dc3facf6baf06e9965236e1effbc03e4afa548a81c6bbd8e53eb5e1b7821ec7d9da7f3241742f44ea1d63c31214f1d074127f292d7ba
7
- data.tar.gz: b55b83cc26bdd0c2b1c4cb6987cd2684d67492a14ca3d8f73a310765f881cdb0c68f4208b952c3f7b8ab0f09cf806ea7a15113d099a1948e2cd7bb9fa9f65cae
6
+ metadata.gz: affe77b4760847ba758fe5f671fdcd05676d6046c70a58fa6f7258e32f1e336abb38154056a3f3d455eddc2333075dd59893bd1ed2d74b91c34ae42bfbec93b1
7
+ data.tar.gz: 28e8c4852078a9f5d4788fb52a66604837c047e41cae072781737a32a67274ffc21a0e683446ad803a4fc48b405d2b0b4bda612c850f69ef2008668e2f938366
@@ -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.10)
11
- ffi (~> 1.3.0)
11
+ ethon (0.5.12)
12
+ ffi (>= 1.3.0)
12
13
  mime-types (~> 1.18)
13
- excon (0.20.0)
14
- ffi (1.3.1)
15
- mime-types (1.21)
16
- minitest (4.6.2)
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.3)
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.2)
24
- ethon (~> 0.5.10)
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!
@@ -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__))
@@ -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
- @logger = logger
22
+ @@logger = logger
21
23
  end
22
24
 
23
25
  def self.logger()
24
- @logger
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
- # todo: initialize this as module variable above
36
- @logger = Logger.new(STDOUT)
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] ? "" : " NOTICE: Please install 'typhoeus' gem for optimal performance.")
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.#{hint}"
83
+ @logger.debug "Using rest-client gem. #{hint}"
63
84
  end
64
85
  end
65
86
 
66
87
  def choose_best_gem
67
- begin
68
- require 'typhoeus'
69
- @gem = :typhoeus
70
- rescue LoadError => ex
71
- @logger.debug "LoadError on typhoeus, trying net-http-persistent..."
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
- # try net-http-persistent
74
- require 'net/http/persistent'
75
- @gem = :net_http_persistent
102
+ require bg.gem_name
103
+ @gem = bg.name
104
+ return @gem
76
105
  rescue LoadError => ex
77
- @logger.debug "LoadError on net-http-persistent, falling back to rest-client..."
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={})
@@ -7,16 +7,14 @@ module Rest
7
7
  end
8
8
 
9
9
  class HttpError < RestError
10
- def initialize(response)
11
- super("#{response.code} Error")
12
- @response = response
13
- end
10
+ attr_reader :response, :code
11
+ attr_accessor :options
14
12
 
15
- def response
16
- @response
17
- end
18
- def code
19
- response.code
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
@@ -1,3 +1,3 @@
1
1
  module Rest
2
- VERSION = "2.6.0"
2
+ VERSION = "2.6.1"
3
3
  end
@@ -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
@@ -7,7 +7,7 @@ module Rest
7
7
  attr_reader :ex
8
8
 
9
9
  def initialize(ex)
10
- super(ex.response)
10
+ super(ex.response, ex.http_code)
11
11
  @ex = ex
12
12
  end
13
13
  end
@@ -63,7 +63,7 @@ module Rest
63
63
  # Could not get an http response, something's wrong.
64
64
  raise Rest::RestError.new("Could not get a response. Curl error 0.")
65
65
  else
66
- raise Rest::HttpError.new(r)
66
+ raise Rest::HttpError.new(r, r.code)
67
67
  end
68
68
  end
69
69
 
@@ -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"
@@ -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 => nil, :log_level=>Logger::DEBUG)
14
+ @rest = Rest::Client.new(:gem => :rest_client, :log_level=>Logger::DEBUG)
15
15
 
16
16
  end
17
17
 
@@ -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 GitHub")
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
- assert ex.code == 404
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.0
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-04-01 00:00:00.000000000 Z
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: typhoeus
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.5.4
34
- type: :development
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.5.4
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: net-http-persistent
42
+ name: typhoeus
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '>='
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
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: '0'
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.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.