rest-client 2.0.0.rc1 → 2.0.0.rc2

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: 794ed2e11b0716ada13b32030f28b41a73fb0d8a
4
- data.tar.gz: 72d955648c12a37a8d44fb024a94c2d490b5216f
3
+ metadata.gz: 96905e3d1e6d50b89220b2d81fbf057e2e560273
4
+ data.tar.gz: 1c16a11c16b30878c6d1927fa7b183f9d46fb502
5
5
  SHA512:
6
- metadata.gz: b8be8c02f82f4a02b8641d8d2f0d5e8055d9fbd563dfde908d9d364966dd49a81dada859906c37a93fb0c75a4beacf8ef91f45050f7be2426371eeec5871eda7
7
- data.tar.gz: dd77062a891eb9e90cbd6b4c0b6e31ef3148fb2249f628f588907b433cc92ed435aea107d34452b6a8ba6a214c719f20c62c1bb8e10997a04495b02a3093a796
6
+ metadata.gz: cc2cf0fa39a6c76dd20ab12e213c05c51cd6158751d76fe0d912783c8762fc116fdaa8a2b6395fdbf5788495f6a28596bacc16616a2041e1de4a999543e559fc
7
+ data.tar.gz: f2048aadadb9a828cf370ac0a5f670f9115673a5732b06a31e2a296ccf7e1ba93e0d3b755606d6aa54fd6d007683f4229bbacbd88f930c90db29b72003adc8cc
data/AUTHORS CHANGED
@@ -82,6 +82,7 @@ Rafael Ssouza
82
82
  Rick Olson
83
83
  Robert Eanes
84
84
  Rodrigo Panachi
85
+ Samuel Cochran
85
86
  Syl Turner
86
87
  T. Watanabe
87
88
  Tekin
@@ -8,6 +8,12 @@ of specifying actions: get, put, post, delete.
8
8
  * Main page: https://github.com/rest-client/rest-client
9
9
  * Mailing list: rest.client@librelist.com (send a mail to subscribe).
10
10
 
11
+ === Mailing list changes
12
+
13
+ The Librelist mailing list is currently *defunct*, as Librelist appears to be
14
+ broken and not accepting new mail. We will choose a new email list provider
15
+ soon.
16
+
11
17
  == Requirements
12
18
 
13
19
  MRI Ruby 1.9.3 and newer are supported. Alternative interpreters compatible with
@@ -74,6 +80,10 @@ helpers are just thin wrappers around RestClient::Request.execute.
74
80
  RestClient::Request.execute(method: :get, url: 'http://example.com/resource',
75
81
  timeout: 10)
76
82
 
83
+ RestClient::Request.execute(method: :get, url: 'http://example.com/resource',
84
+ ssl_ca_file: 'myca.pem',
85
+ ssl_ciphers: 'AESGCM:!aNULL')
86
+
77
87
  You can also use this to pass a payload for HTTP verbs like DELETE, where the
78
88
  RestClient.delete helper doesn't accept a payload.
79
89
 
@@ -332,7 +342,15 @@ extract and set headers for them as needed:
332
342
  )
333
343
  # ...response body
334
344
 
335
- == SSL Client Certificates
345
+ == SSL/TLS support
346
+
347
+ Various options are supported for configuring rest-client's TLS settings. By
348
+ default, rest-client will verify certificates using the system's CA store on
349
+ all platforms. (This is intended to be similar to how browsers behave.) You can
350
+ specify an :ssl_ca_file, :ssl_ca_path, or :ssl_cert_store to customize the
351
+ certificate authorities accepted.
352
+
353
+ === SSL Client Certificates
336
354
 
337
355
  RestClient::Resource.new(
338
356
  'https://example.com',
data/history.md CHANGED
@@ -9,11 +9,17 @@ This release is largely API compatible, but makes several breaking changes.
9
9
  For example, `Content-Type: text/plain; charset=EUC-JP` will return a String
10
10
  encoded with `Encoding::EUC_JP`.
11
11
  - Change exceptions raised on request timeout. Instead of
12
- RestClient::RequestTimeout (which is still used for HTTP 408), network
13
- timeouts will now raise either RestClient::Exceptions::ReadTimeout or
14
- RestClient::Exceptions::OpenTimeout, both of which inherit from
15
- RestClient::Exceptions::Timeout. This class also makes the original wrapped
16
- exception available as `#original_exception`.
12
+ `RestClient::RequestTimeout` (which is still used for HTTP 408), network
13
+ timeouts will now raise either `RestClient::Exceptions::ReadTimeout` or
14
+ `RestClient::Exceptions::OpenTimeout`, both of which inherit from
15
+ `RestClient::Exceptions::Timeout`. For backwards compatibility, this still
16
+ inherits from `RestClient::RequestTimeout` so existing uses will still work.
17
+ This may change in a future major release. These new timeout classes also
18
+ make the original wrapped exception available as `#original_exception`.
19
+ - Unify request exceptions under `RestClient::RequestFailed`, which still
20
+ inherits from `ExceptionWithResponse`. Previously, HTTP 304, 401, and 404
21
+ inherited directly from `ExceptionWithResponse` rather than from
22
+ `RequestFailed`. Now _all_ HTTP status code exceptions inherit from both.
17
23
  - Rename `:timeout` to `:read_timeout`. When `:timeout` is passed, now set both
18
24
  `:read_timeout` and `:open_timeout`.
19
25
  - Change default HTTP Accept header to `*/*`
@@ -59,6 +65,14 @@ This release is largely API compatible, but makes several breaking changes.
59
65
  possible to add procs like `RestClient.add_before_execution_proc` to a single
60
66
  request without global state.
61
67
 
68
+ # 2.0.0.rc1
69
+
70
+ Changes in the release candidate that did not persist through the final 2.0.0
71
+ release:
72
+ - RestClient::Exceptions::Timeout was originally going to be a direct subclass
73
+ of RestClient::Exception in the release candidate. This exception tree was
74
+ made a subclass of RestClient::RequestTimeout prior to the final release.
75
+
62
76
  # 1.8.0
63
77
 
64
78
  - Security: implement standards compliant cookie handling by adding a
@@ -100,20 +100,16 @@ module RestClient
100
100
  @response.body if @response
101
101
  end
102
102
 
103
- def inspect
104
- "#{message}: #{http_body}"
105
- end
106
-
107
103
  def to_s
108
- inspect
104
+ message
109
105
  end
110
106
 
111
107
  def message
112
- @message || self.class.default_message
108
+ @message || default_message
113
109
  end
114
110
 
115
- def self.default_message
116
- self.name
111
+ def default_message
112
+ self.class.name
117
113
  end
118
114
  end
119
115
 
@@ -124,7 +120,7 @@ module RestClient
124
120
  # The request failed with an error code not managed by the code
125
121
  class RequestFailed < ExceptionWithResponse
126
122
 
127
- def message
123
+ def default_message
128
124
  "HTTP status code #{http_code}"
129
125
  end
130
126
 
@@ -141,11 +137,30 @@ module RestClient
141
137
  module Exceptions
142
138
  # Map http status codes to the corresponding exception class
143
139
  EXCEPTIONS_MAP = {}
140
+ end
141
+
142
+ # Create HTTP status exception classes
143
+ STATUSES.each_pair do |code, message|
144
+ klass = Class.new(RequestFailed) do
145
+ send(:define_method, :default_message) {"#{http_code ? "#{http_code} " : ''}#{message}"}
146
+ end
147
+ klass_constant = const_set(message.delete(' \-\''), klass)
148
+ Exceptions::EXCEPTIONS_MAP[code] = klass_constant
149
+ end
150
+
151
+ # Backwards compatibility. "Not Found" is the actual text in the RFCs.
152
+ ResourceNotFound = NotFound
153
+
154
+ module Exceptions
155
+ # We have to split the Exceptions module like we do here because the
156
+ # EXCEPTIONS_MAP is under Exceptions, but we depend on
157
+ # RestClient::RequestTimeout below.
144
158
 
145
159
  # Base class for request timeouts.
160
+ #
146
161
  # NB: Previous releases of rest-client would raise RequestTimeout both for
147
162
  # HTTP 408 responses and for actual connection timeouts.
148
- class Timeout < RestClient::Exception
163
+ class Timeout < RestClient::RequestTimeout
149
164
  def initialize(message=nil, original_exception=nil)
150
165
  super(nil, nil)
151
166
  self.message = message if message
@@ -156,7 +171,7 @@ module RestClient
156
171
  # Timeout when connecting to a server. Typically wraps Net::OpenTimeout (in
157
172
  # ruby 2.0 or greater).
158
173
  class OpenTimeout < Timeout
159
- def self.default_message
174
+ def default_message
160
175
  'Timed out connecting to server'
161
176
  end
162
177
  end
@@ -164,25 +179,12 @@ module RestClient
164
179
  # Timeout when reading from a server. Typically wraps Net::ReadTimeout (in
165
180
  # ruby 2.0 or greater).
166
181
  class ReadTimeout < Timeout
167
- def self.default_message
182
+ def default_message
168
183
  'Timed out reading data from server'
169
184
  end
170
185
  end
171
186
  end
172
187
 
173
- STATUSES.each_pair do |code, message|
174
-
175
- # Compatibility
176
- superclass = ([304, 401, 404].include? code) ? ExceptionWithResponse : RequestFailed
177
- klass = Class.new(superclass) do
178
- send(:define_method, :message) {"#{http_code ? "#{http_code} " : ''}#{message}"}
179
- end
180
- klass_constant = const_set message.delete(' \-\''), klass
181
- Exceptions::EXCEPTIONS_MAP[code] = klass_constant
182
- end
183
-
184
- # Backwards compatibility. "Not Found" is the actual text in the RFCs.
185
- ResourceNotFound = NotFound
186
188
 
187
189
  # The server broke the connection prior to the request completing. Usually
188
190
  # this means it crashed, or sometimes that your network connection was
@@ -248,6 +248,7 @@ module RestClient
248
248
  end
249
249
  end
250
250
 
251
+ user_headers = user_headers.dup
251
252
  user_headers[:cookie] = @cookies.map { |key, val| "#{key}=#{val}" }.sort.join('; ')
252
253
  end
253
254
  headers = stringify_headers(default_headers).merge(stringify_headers(user_headers))
@@ -1,5 +1,5 @@
1
1
  module RestClient
2
- VERSION_INFO = [2, 0, 0, 'rc1'] unless defined?(self::VERSION_INFO)
2
+ VERSION_INFO = [2, 0, 0, 'rc2'] unless defined?(self::VERSION_INFO)
3
3
  VERSION = VERSION_INFO.map(&:to_s).join('.') unless defined?(self::VERSION)
4
4
 
5
5
  def self.version
@@ -84,4 +84,19 @@ describe "backwards compatibility" do
84
84
  it 'aliases RestClient::NotFound as ResourceNotFound' do
85
85
  RestClient::ResourceNotFound.should eq RestClient::NotFound
86
86
  end
87
+
88
+ it 'subclasses NotFound from RequestFailed, ExceptionWithResponse' do
89
+ RestClient::NotFound.should be < RestClient::RequestFailed
90
+ RestClient::NotFound.should be < RestClient::ExceptionWithResponse
91
+ end
92
+
93
+ it 'subclasses timeout from RestClient::RequestTimeout, RequestFailed, EWR' do
94
+ RestClient::Exceptions::OpenTimeout.should be < RestClient::Exceptions::Timeout
95
+ RestClient::Exceptions::ReadTimeout.should be < RestClient::Exceptions::Timeout
96
+
97
+ RestClient::Exceptions::Timeout.should be < RestClient::RequestTimeout
98
+ RestClient::Exceptions::Timeout.should be < RestClient::RequestFailed
99
+ RestClient::Exceptions::Timeout.should be < RestClient::ExceptionWithResponse
100
+ end
101
+
87
102
  end
@@ -383,6 +383,19 @@ describe RestClient::Request, :include_helpers do
383
383
  lambda { @request.transmit(@uri, 'req', nil) }.should raise_error(RestClient::Exceptions::OpenTimeout)
384
384
  end
385
385
 
386
+ it "uses correct error message for ReadTimeout",
387
+ :if => defined?(Net::ReadTimeout) do
388
+ @http.stub(:request).and_raise(Net::ReadTimeout)
389
+ lambda { @request.transmit(@uri, 'req', nil) }.should raise_error(RestClient::Exceptions::ReadTimeout, 'Timed out reading data from server')
390
+ end
391
+
392
+ it "uses correct error message for OpenTimeout",
393
+ :if => defined?(Net::OpenTimeout) do
394
+ @http.stub(:request).and_raise(Net::OpenTimeout)
395
+ lambda { @request.transmit(@uri, 'req', nil) }.should raise_error(RestClient::Exceptions::OpenTimeout, 'Timed out connecting to server')
396
+ end
397
+
398
+
386
399
  it "class method execute wraps constructor" do
387
400
  req = double("rest request")
388
401
  RestClient::Request.should_receive(:new).with(1 => 2).and_return(req)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc1
4
+ version: 2.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - REST Client Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-10 00:00:00.000000000 Z
11
+ date: 2015-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: webmock