nestful 1.1.0 → 1.1.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/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:
|