rest 2.6.0 → 2.6.1

Sign up to get free protection for your applications and to get access to all the features.
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.