nestful 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/nestful/connection.rb +24 -16
- data/lib/nestful/exceptions.rb +10 -11
- data/lib/nestful/request.rb +3 -2
- data/lib/nestful/version.rb +1 -1
- data/test/nestful/test_request.rb +6 -0
- data/test/nestful/test_response.rb +11 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b7d6e5baffbf7d32a64d374b1e6b37dcb54417a
|
4
|
+
data.tar.gz: 45d87dc4273b826411fcf2f0c06d7e8a263dd175
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f21c61bf0ab954f6974b93a13b669f95d023256410609c1522fd43ab7cb6f1be2b646083581acd66c63fe12a058faec8ecc32fc6a08f040e139296eec04c5077
|
7
|
+
data.tar.gz: b50d117f9b93444b8312bcfe141a85fb905f029f7f28b7ccd740bfc00f225e7b87b20448dc91504d078c1b054bacf1710bc7432082386148ff1b59c4e86dad4d
|
data/lib/nestful/connection.rb
CHANGED
@@ -44,12 +44,20 @@ module Nestful
|
|
44
44
|
request(:put, path, body, headers, &block)
|
45
45
|
end
|
46
46
|
|
47
|
+
def patch(path, body = '', headers = {}, &block)
|
48
|
+
request(:patch, path, body, headers, &block)
|
49
|
+
end
|
50
|
+
|
47
51
|
def post(path, body = '', headers = {}, &block)
|
48
52
|
request(:post, path, body, headers, &block)
|
49
53
|
end
|
50
54
|
|
51
55
|
protected
|
52
56
|
|
57
|
+
def request=(request)
|
58
|
+
@request = request
|
59
|
+
end
|
60
|
+
|
53
61
|
# Makes a request to the remote service.
|
54
62
|
def request(method, path, *arguments)
|
55
63
|
response = http.send(method, path, *arguments)
|
@@ -58,9 +66,9 @@ module Nestful
|
|
58
66
|
handle_response(response)
|
59
67
|
|
60
68
|
rescue Timeout::Error, Net::OpenTimeout => e
|
61
|
-
raise TimeoutError.new(e.message)
|
69
|
+
raise TimeoutError.new(@request, e.message)
|
62
70
|
rescue OpenSSL::SSL::SSLError => e
|
63
|
-
raise SSLError.new(e.message)
|
71
|
+
raise SSLError.new(@request, e.message)
|
64
72
|
rescue SocketError,
|
65
73
|
EOFError,
|
66
74
|
Net::HTTPBadResponse,
|
@@ -75,10 +83,10 @@ module Nestful
|
|
75
83
|
Errno::EHOSTUNREACH,
|
76
84
|
Errno::EINVAL,
|
77
85
|
Errno::ENOPROTOOPT => e
|
78
|
-
raise ErrnoError.new(e.message)
|
86
|
+
raise ErrnoError.new(@request, e.message)
|
79
87
|
rescue Zlib::DataError,
|
80
88
|
Zlib::BufError => e
|
81
|
-
raise ZlibError.new(e.message)
|
89
|
+
raise ZlibError.new(@request, e.message)
|
82
90
|
end
|
83
91
|
|
84
92
|
# Handles response and error codes from the remote service.
|
@@ -87,30 +95,30 @@ module Nestful
|
|
87
95
|
when 200...299
|
88
96
|
response
|
89
97
|
when 300..399
|
90
|
-
raise Redirection.new(response)
|
98
|
+
raise Redirection.new(@request, response)
|
91
99
|
when 400
|
92
|
-
raise BadRequest.new(response)
|
100
|
+
raise BadRequest.new(@request, response)
|
93
101
|
when 401
|
94
|
-
raise UnauthorizedAccess.new(response)
|
102
|
+
raise UnauthorizedAccess.new(@request, response)
|
95
103
|
when 403
|
96
|
-
raise ForbiddenAccess.new(response)
|
104
|
+
raise ForbiddenAccess.new(@request, response)
|
97
105
|
when 404
|
98
|
-
raise ResourceNotFound.new(response)
|
106
|
+
raise ResourceNotFound.new(@request, response)
|
99
107
|
when 405
|
100
|
-
raise MethodNotAllowed.new(response)
|
108
|
+
raise MethodNotAllowed.new(@request, response)
|
101
109
|
when 409
|
102
|
-
raise ResourceConflict.new(response)
|
110
|
+
raise ResourceConflict.new(@request, response)
|
103
111
|
when 410
|
104
|
-
raise ResourceGone.new(response)
|
112
|
+
raise ResourceGone.new(@request, response)
|
105
113
|
when 422
|
106
|
-
raise ResourceInvalid.new(response)
|
114
|
+
raise ResourceInvalid.new(@request, response)
|
107
115
|
when 401...500
|
108
|
-
raise ClientError.new(response)
|
116
|
+
raise ClientError.new(@request, response)
|
109
117
|
when 500...600
|
110
|
-
raise ServerError.new(response)
|
118
|
+
raise ServerError.new(@request, response)
|
111
119
|
else
|
112
120
|
raise ResponseError.new(
|
113
|
-
response, "Unknown response code: #{response.code}"
|
121
|
+
@request, response, "Unknown response code: #{response.code}"
|
114
122
|
)
|
115
123
|
end
|
116
124
|
end
|
data/lib/nestful/exceptions.rb
CHANGED
@@ -1,23 +1,22 @@
|
|
1
1
|
module Nestful
|
2
|
-
class Error < StandardError
|
3
|
-
|
4
|
-
|
5
|
-
class RequestError < Error
|
6
|
-
def initialize(message)
|
7
|
-
@message = message
|
8
|
-
end
|
2
|
+
class Error < StandardError
|
3
|
+
attr_reader :request
|
9
4
|
|
10
|
-
def
|
11
|
-
|
5
|
+
def initialize(request = nil, message = nil)
|
6
|
+
super(message)
|
7
|
+
@request = request
|
12
8
|
end
|
13
9
|
end
|
14
10
|
|
11
|
+
ConnectionError = Error
|
12
|
+
RequestError = Error
|
13
|
+
|
15
14
|
class ResponseError < Error
|
16
15
|
attr_reader :response
|
17
16
|
|
18
|
-
def initialize(response, message = nil)
|
17
|
+
def initialize(request, response, message = nil)
|
18
|
+
super(request, message)
|
19
19
|
@response = response
|
20
|
-
@message = message
|
21
20
|
end
|
22
21
|
|
23
22
|
def to_s
|
data/lib/nestful/request.rb
CHANGED
@@ -100,7 +100,7 @@ module Nestful
|
|
100
100
|
attempts += 1
|
101
101
|
|
102
102
|
raise error unless error.response['Location']
|
103
|
-
raise RedirectionLoop.new(error.response) if attempts > max_attempts
|
103
|
+
raise RedirectionLoop.new(self, error.response) if attempts > max_attempts
|
104
104
|
|
105
105
|
location = error.response['Location'].scrub
|
106
106
|
location = URI.parse(location)
|
@@ -119,7 +119,8 @@ module Nestful
|
|
119
119
|
Connection.new(uri,
|
120
120
|
:proxy => proxy,
|
121
121
|
:timeout => timeout,
|
122
|
-
:ssl_options => ssl_options
|
122
|
+
:ssl_options => ssl_options,
|
123
|
+
:request => self
|
123
124
|
)
|
124
125
|
end
|
125
126
|
|
data/lib/nestful/version.rb
CHANGED
@@ -29,6 +29,12 @@ class TestRequest < MiniTest::Unit::TestCase
|
|
29
29
|
assert_requested(:put, 'http://example.com/v1/tokens')
|
30
30
|
end
|
31
31
|
|
32
|
+
def test_patch
|
33
|
+
stub_request(:any, 'http://example.com/v1/tokens')
|
34
|
+
Nestful::Request.new('http://example.com/v1/tokens', :method => :patch).execute
|
35
|
+
assert_requested(:patch, 'http://example.com/v1/tokens')
|
36
|
+
end
|
37
|
+
|
32
38
|
def test_head
|
33
39
|
stub_request(:any, 'http://example.com/v1/tokens')
|
34
40
|
Nestful::Request.new('http://example.com/v1/tokens', :method => :head).execute
|
@@ -35,6 +35,16 @@ class TestResponse < MiniTest::Unit::TestCase
|
|
35
35
|
assert_equal 201, response.status
|
36
36
|
end
|
37
37
|
|
38
|
+
def test_errors_include_request
|
39
|
+
stub_request(:any, 'http://example.com/v1/charges').to_return(:status => 404)
|
40
|
+
|
41
|
+
begin
|
42
|
+
Nestful.get('http://example.com/v1/charges')
|
43
|
+
rescue Nestful::ResourceNotFound => e
|
44
|
+
assert_equal 'http://example.com/v1/charges', e.request.url
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
38
48
|
def test_raises_404
|
39
49
|
stub_request(:any, 'http://example.com/v1/charges').to_return(:status => 404)
|
40
50
|
|
@@ -58,4 +68,4 @@ class TestResponse < MiniTest::Unit::TestCase
|
|
58
68
|
assert response.respond_to?(:fetch)
|
59
69
|
assert response.fetch('result')
|
60
70
|
end
|
61
|
-
end
|
71
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nestful
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex MacCaw
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -72,4 +72,3 @@ test_files:
|
|
72
72
|
- test/nestful/test_request.rb
|
73
73
|
- test/nestful/test_resource.rb
|
74
74
|
- test/nestful/test_response.rb
|
75
|
-
has_rdoc:
|