ddy_remote_resource 1.1.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/.travis.yml +1 -1
- data/lib/remote_resource/errors.rb +7 -0
- data/lib/remote_resource/request.rb +32 -19
- data/lib/remote_resource/response.rb +9 -1
- data/lib/remote_resource/version.rb +1 -1
- data/remote_resource.gemspec +7 -7
- data/spec/integration/create_spec.rb +3 -3
- data/spec/integration/save_spec.rb +4 -4
- data/spec/lib/remote_resource/request_spec.rb +54 -6
- data/spec/lib/remote_resource/version_spec.rb +1 -1
- metadata +15 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b75b31568bd5a246694f34d65c20226e97c2620f7afd6f11750af62ed594b458
|
4
|
+
data.tar.gz: 3bdce3777b2ea4fc6a72371ec9e117a3f41bd304316cd0f8eb064e8fa3c0fa8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0c20de26d1ae69f00878158fa2730fffa0cf43a1b6981a55faec3e435950009700fee9d600160698b45b235d9ffa42c8ee8848bb8e5a8eaab6935461976d554
|
7
|
+
data.tar.gz: 9cd8475b745edad03b039567d5353b7a7b5077ad4d2721bd91b6b114a35d4a44554d417b060f3a069e20fa911232e5ec080183c1328f09e4e2ea1301713d3025
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3
|
1
|
+
2.5.3
|
data/.travis.yml
CHANGED
@@ -42,6 +42,12 @@ module RemoteResource
|
|
42
42
|
@response.code
|
43
43
|
end
|
44
44
|
|
45
|
+
# The return code can contain additional information when response_code=0
|
46
|
+
# see https://curl.se/libcurl/c/libcurl-errors.html for the full list
|
47
|
+
def return_code
|
48
|
+
@response.return_code
|
49
|
+
end
|
50
|
+
|
45
51
|
def response_body
|
46
52
|
@response.body # TODO: Filter sensitive information using: RemoteResource::Util.filter_params
|
47
53
|
end
|
@@ -53,6 +59,7 @@ module RemoteResource
|
|
53
59
|
def to_s
|
54
60
|
message = "HTTP request failed for #{resource_klass}"
|
55
61
|
message << " with response_code=#{response_code}" if response_code.present?
|
62
|
+
message << " with return_code=#{return_code}" if return_code.present? && response_code.zero?
|
56
63
|
message << " with http_action=#{http_action}"
|
57
64
|
message << " with request_url=#{request_url}"
|
58
65
|
message
|
@@ -14,6 +14,9 @@ module RemoteResource
|
|
14
14
|
|
15
15
|
DEFAULT_EXTENSION = '.json'.freeze
|
16
16
|
|
17
|
+
DEFAULT_CONNECT_TIMEOUT = 30
|
18
|
+
DEFAULT_READ_TIMEOUT = 120
|
19
|
+
|
17
20
|
attr_reader :resource, :resource_klass, :http_action, :attributes
|
18
21
|
|
19
22
|
def initialize(resource, http_action, attributes = {}, connection_options = {})
|
@@ -41,7 +44,7 @@ module RemoteResource
|
|
41
44
|
def perform
|
42
45
|
SUPPORTED_HTTP_METHODS.include?(http_action) || raise(RemoteResource::HTTPMethodUnsupported, "Requested HTTP method=#{http_action.to_s} is NOT supported, the HTTP action MUST be a supported HTTP action=#{SUPPORTED_HTTP_METHODS.join(', ')}")
|
43
46
|
|
44
|
-
connection_response = connection.public_send(http_action, request_url, params: query, body: body, headers: headers)
|
47
|
+
connection_response = connection.public_send(http_action, request_url, params: query, body: body, headers: headers, **timeout_options)
|
45
48
|
response = RemoteResource::Response.new(connection_response, connection_options.merge(request: self, connection_request: connection_response.request))
|
46
49
|
|
47
50
|
if response.success? || response.unprocessable_entity?
|
@@ -118,47 +121,57 @@ module RemoteResource
|
|
118
121
|
headers
|
119
122
|
end
|
120
123
|
|
124
|
+
def timeout_options
|
125
|
+
connecttimeout = connection_options[:connecttimeout].presence || DEFAULT_CONNECT_TIMEOUT
|
126
|
+
timeout = connection_options[:timeout].presence || DEFAULT_READ_TIMEOUT
|
127
|
+
|
128
|
+
{ connecttimeout: connecttimeout, timeout: timeout }
|
129
|
+
end
|
130
|
+
|
121
131
|
private
|
122
132
|
|
123
133
|
def raise_http_error(request, response)
|
134
|
+
# Special case if a request has a time out, as Typhoeus does not set a 408 response_code
|
135
|
+
raise RemoteResource::HTTPRequestTimeout.new(request, response) if response.timed_out?
|
136
|
+
|
124
137
|
case response.try(:response_code)
|
125
138
|
when 301, 302, 303, 307 then
|
126
139
|
raise RemoteResource::HTTPRedirectionError.new(request, response)
|
127
|
-
when 400
|
140
|
+
when 400
|
128
141
|
raise RemoteResource::HTTPBadRequest.new(request, response)
|
129
|
-
when 401
|
142
|
+
when 401
|
130
143
|
raise RemoteResource::HTTPUnauthorized.new(request, response)
|
131
|
-
when 403
|
144
|
+
when 403
|
132
145
|
raise RemoteResource::HTTPForbidden.new(request, response)
|
133
|
-
when 404
|
146
|
+
when 404
|
134
147
|
raise RemoteResource::HTTPNotFound.new(request, response)
|
135
|
-
when 405
|
148
|
+
when 405
|
136
149
|
raise RemoteResource::HTTPMethodNotAllowed.new(request, response)
|
137
|
-
when 406
|
150
|
+
when 406
|
138
151
|
raise RemoteResource::HTTPNotAcceptable.new(request, response)
|
139
|
-
when 408
|
152
|
+
when 408
|
140
153
|
raise RemoteResource::HTTPRequestTimeout.new(request, response)
|
141
|
-
when 409
|
154
|
+
when 409
|
142
155
|
raise RemoteResource::HTTPConflict.new(request, response)
|
143
|
-
when 410
|
156
|
+
when 410
|
144
157
|
raise RemoteResource::HTTPGone.new(request, response)
|
145
|
-
when 418
|
158
|
+
when 418
|
146
159
|
raise RemoteResource::HTTPTeapot.new(request, response)
|
147
|
-
when 444
|
160
|
+
when 444
|
148
161
|
raise RemoteResource::HTTPNoResponse.new(request, response)
|
149
|
-
when 494
|
162
|
+
when 494
|
150
163
|
raise RemoteResource::HTTPRequestHeaderTooLarge.new(request, response)
|
151
|
-
when 495
|
164
|
+
when 495
|
152
165
|
raise RemoteResource::HTTPCertError.new(request, response)
|
153
|
-
when 496
|
166
|
+
when 496
|
154
167
|
raise RemoteResource::HTTPNoCert.new(request, response)
|
155
|
-
when 497
|
168
|
+
when 497
|
156
169
|
raise RemoteResource::HTTPToHTTPS.new(request, response)
|
157
|
-
when 499
|
170
|
+
when 499
|
158
171
|
raise RemoteResource::HTTPClientClosedRequest.new(request, response)
|
159
|
-
when 400..499
|
172
|
+
when 400..499
|
160
173
|
raise RemoteResource::HTTPClientError.new(request, response)
|
161
|
-
when 500..599
|
174
|
+
when 500..599
|
162
175
|
raise RemoteResource::HTTPServerError.new(request, response)
|
163
176
|
else
|
164
177
|
raise RemoteResource::HTTPError.new(request, response)
|
@@ -16,6 +16,10 @@ module RemoteResource
|
|
16
16
|
@connection_response.success?
|
17
17
|
end
|
18
18
|
|
19
|
+
def timed_out?
|
20
|
+
@connection_response.timed_out?
|
21
|
+
end
|
22
|
+
|
19
23
|
def unprocessable_entity?
|
20
24
|
response_code == 422
|
21
25
|
end
|
@@ -24,7 +28,11 @@ module RemoteResource
|
|
24
28
|
@response_code ||= @connection_response.response_code
|
25
29
|
end
|
26
30
|
|
27
|
-
|
31
|
+
alias code response_code
|
32
|
+
|
33
|
+
def return_code
|
34
|
+
@return_code ||= @connection_response.return_code
|
35
|
+
end
|
28
36
|
|
29
37
|
def headers
|
30
38
|
@headers ||= @connection_response.headers
|
data/remote_resource.gemspec
CHANGED
@@ -6,8 +6,8 @@ require 'remote_resource/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'ddy_remote_resource'
|
8
8
|
spec.version = RemoteResource::VERSION
|
9
|
-
spec.authors = ['Jan van der Pas']
|
10
|
-
spec.email = ['
|
9
|
+
spec.authors = ['Digidentity', 'Jan van der Pas']
|
10
|
+
spec.email = ['development@digidentity.com']
|
11
11
|
spec.summary = %q{RemoteResource, a gem to use resources with REST services.}
|
12
12
|
spec.description = %q{RemoteResource, a gem to use resources with REST services. A replacement for ActiveResource gem.}
|
13
13
|
spec.homepage = ''
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency 'bundler'
|
21
|
+
spec.add_development_dependency 'bundler'
|
22
22
|
spec.add_development_dependency 'rake', '~> 10.4'
|
23
23
|
spec.add_development_dependency 'rspec', '~> 3.1'
|
24
24
|
spec.add_development_dependency 'pry', '~> 0.10'
|
@@ -27,11 +27,11 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
28
28
|
spec.add_development_dependency 'terminal-notifier-guard', '~> 1.6'
|
29
29
|
|
30
|
-
spec.add_runtime_dependency 'activesupport', '>= 4.1', '<
|
31
|
-
spec.add_runtime_dependency 'activemodel', '>= 4.1', '<
|
30
|
+
spec.add_runtime_dependency 'activesupport', '>= 4.1', '< 7'
|
31
|
+
spec.add_runtime_dependency 'activemodel', '>= 4.1', '< 7'
|
32
32
|
spec.add_runtime_dependency 'virtus', '~> 1.0', '>= 1.0.4'
|
33
33
|
spec.add_runtime_dependency 'mime-types', '~> 3.0'
|
34
|
-
spec.add_runtime_dependency 'ethon'
|
35
|
-
spec.add_runtime_dependency 'typhoeus', '
|
34
|
+
spec.add_runtime_dependency 'ethon'
|
35
|
+
spec.add_runtime_dependency 'typhoeus', '>= 0.7'
|
36
36
|
spec.add_runtime_dependency 'request_store', '~> 1.4.1'
|
37
37
|
end
|
@@ -44,7 +44,7 @@ RSpec.describe '.create' do
|
|
44
44
|
|
45
45
|
let!(:expected_request) do
|
46
46
|
mock_request = stub_request(:post, 'https://www.example.com/posts.json')
|
47
|
-
mock_request.with(query: nil, body:
|
47
|
+
mock_request.with(query: nil, body: expected_request_body.to_json, headers: expected_default_headers)
|
48
48
|
mock_request.to_return(status: 201, body: JSON.generate(response_body))
|
49
49
|
mock_request
|
50
50
|
end
|
@@ -81,7 +81,7 @@ RSpec.describe '.create' do
|
|
81
81
|
|
82
82
|
let!(:expected_request) do
|
83
83
|
mock_request = stub_request(:post, 'https://www.example.com/posts.json')
|
84
|
-
mock_request.with(query: nil, body:
|
84
|
+
mock_request.with(query: nil, body: expected_request_body.to_json, headers: expected_default_headers.merge({ 'X-Pseudonym' => 'pseudonym' }))
|
85
85
|
mock_request.to_return(status: 201, body: JSON.generate(response_body))
|
86
86
|
mock_request
|
87
87
|
end
|
@@ -114,7 +114,7 @@ RSpec.describe '.create' do
|
|
114
114
|
|
115
115
|
let!(:expected_request) do
|
116
116
|
mock_request = stub_request(:post, 'https://www.example.com/posts.json')
|
117
|
-
mock_request.with(query: nil, body:
|
117
|
+
mock_request.with(query: nil, body: expected_request_body.to_json, headers: expected_default_headers)
|
118
118
|
mock_request.to_return(status: 422, body: JSON.generate(response_body))
|
119
119
|
mock_request
|
120
120
|
end
|
@@ -48,7 +48,7 @@ RSpec.describe '#save' do
|
|
48
48
|
describe 'default behaviour' do
|
49
49
|
let!(:expected_request) do
|
50
50
|
mock_request = stub_request(:patch, 'https://www.example.com/posts/12.json')
|
51
|
-
mock_request.with(query: nil, body:
|
51
|
+
mock_request.with(query: nil, body: expected_request_body.to_json, headers: expected_default_headers)
|
52
52
|
mock_request.to_return(status: 200, body: JSON.generate(response_body))
|
53
53
|
mock_request
|
54
54
|
end
|
@@ -77,7 +77,7 @@ RSpec.describe '#save' do
|
|
77
77
|
describe 'with connection_options[:headers]' do
|
78
78
|
let!(:expected_request) do
|
79
79
|
mock_request = stub_request(:patch, 'https://www.example.com/posts/12.json')
|
80
|
-
mock_request.with(query: nil, body:
|
80
|
+
mock_request.with(query: nil, body: expected_request_body.to_json, headers: expected_default_headers.merge({ 'X-Pseudonym' => 'pseudonym' }))
|
81
81
|
mock_request.to_return(status: 200, body: JSON.generate(response_body))
|
82
82
|
mock_request
|
83
83
|
end
|
@@ -111,7 +111,7 @@ RSpec.describe '#save' do
|
|
111
111
|
|
112
112
|
let!(:expected_request) do
|
113
113
|
mock_request = stub_request(:patch, 'https://www.example.com/posts/12.json')
|
114
|
-
mock_request.with(query: nil, body:
|
114
|
+
mock_request.with(query: nil, body: expected_request_body.to_json, headers: expected_default_headers)
|
115
115
|
mock_request.to_return(status: 422, body: JSON.generate(response_body))
|
116
116
|
mock_request
|
117
117
|
end
|
@@ -148,7 +148,7 @@ RSpec.describe '#save' do
|
|
148
148
|
describe 'with a 500 response' do
|
149
149
|
let!(:expected_request) do
|
150
150
|
mock_request = stub_request(:patch, 'https://www.example.com/posts/12.json')
|
151
|
-
mock_request.with(query: nil, body:
|
151
|
+
mock_request.with(query: nil, body: expected_request_body.to_json, headers: expected_default_headers.merge({ 'X-Pseudonym' => 'pseudonym' }))
|
152
152
|
mock_request.to_return(status: 500)
|
153
153
|
mock_request
|
154
154
|
end
|
@@ -168,7 +168,9 @@ RSpec.describe RemoteResource::Request do
|
|
168
168
|
let(:expected_connection_options) { request.connection_options }
|
169
169
|
|
170
170
|
it 'makes a GET request with the connection_options[:params] as query' do
|
171
|
-
expect(connection).to receive(:get).with(expected_request_url, params: expected_params,
|
171
|
+
expect(connection).to receive(:get).with(expected_request_url, params: expected_params,
|
172
|
+
body: expected_body, headers: expected_headers,
|
173
|
+
connecttimeout: 30, timeout: 120).and_call_original
|
172
174
|
request.perform
|
173
175
|
end
|
174
176
|
|
@@ -191,7 +193,9 @@ RSpec.describe RemoteResource::Request do
|
|
191
193
|
let(:expected_connection_options) { request.connection_options }
|
192
194
|
|
193
195
|
it 'makes a PUT request with the attributes as body' do
|
194
|
-
expect(connection).to receive(:put).with(expected_request_url, params: expected_params,
|
196
|
+
expect(connection).to receive(:put).with(expected_request_url, params: expected_params,
|
197
|
+
body: expected_body, headers: expected_headers,
|
198
|
+
connecttimeout: 30, timeout: 120).and_call_original
|
195
199
|
request.perform
|
196
200
|
end
|
197
201
|
|
@@ -214,7 +218,9 @@ RSpec.describe RemoteResource::Request do
|
|
214
218
|
let(:expected_connection_options) { request.connection_options }
|
215
219
|
|
216
220
|
it 'makes a PATCH request with the attributes as body' do
|
217
|
-
expect(connection).to receive(:patch).with(expected_request_url, params: expected_params,
|
221
|
+
expect(connection).to receive(:patch).with(expected_request_url, params: expected_params,
|
222
|
+
body: expected_body, headers: expected_headers,
|
223
|
+
connecttimeout: 30, timeout: 120).and_call_original
|
218
224
|
request.perform
|
219
225
|
end
|
220
226
|
|
@@ -237,7 +243,9 @@ RSpec.describe RemoteResource::Request do
|
|
237
243
|
let(:expected_connection_options) { request.connection_options }
|
238
244
|
|
239
245
|
it 'makes a POST request with the attributes as body' do
|
240
|
-
expect(connection).to receive(:post).with(expected_request_url, params: expected_params,
|
246
|
+
expect(connection).to receive(:post).with(expected_request_url, params: expected_params,
|
247
|
+
body: expected_body, headers: expected_headers,
|
248
|
+
connecttimeout: 30, timeout: 120).and_call_original
|
241
249
|
request.perform
|
242
250
|
end
|
243
251
|
|
@@ -260,7 +268,9 @@ RSpec.describe RemoteResource::Request do
|
|
260
268
|
let(:expected_connection_options) { request.connection_options }
|
261
269
|
|
262
270
|
it 'makes a DELETE request with the connection_options[:params] as query' do
|
263
|
-
expect(connection).to receive(:delete).with(expected_request_url, params: expected_params,
|
271
|
+
expect(connection).to receive(:delete).with(expected_request_url, params: expected_params,
|
272
|
+
body: expected_body, headers: expected_headers,
|
273
|
+
connecttimeout: 30, timeout: 120).and_call_original
|
264
274
|
request.perform
|
265
275
|
end
|
266
276
|
|
@@ -586,10 +596,37 @@ RSpec.describe RemoteResource::Request do
|
|
586
596
|
end
|
587
597
|
end
|
588
598
|
|
599
|
+
describe '#timeout_options' do
|
600
|
+
it 'is not given by default' do
|
601
|
+
expect(request.connection_options).not_to include :connecttimeout, :timeout
|
602
|
+
end
|
603
|
+
|
604
|
+
context 'with custom timeouts' do
|
605
|
+
let(:connection_options) do
|
606
|
+
{ connecttimeout: 1, timeout: 2 }
|
607
|
+
end
|
608
|
+
|
609
|
+
it 'sets the timeouts from connection_options' do
|
610
|
+
aggregate_failures do
|
611
|
+
expect(request.connection_options[:connecttimeout]).to eq 1
|
612
|
+
expect(request.connection_options[:timeout]).to eq 2
|
613
|
+
end
|
614
|
+
end
|
615
|
+
end
|
616
|
+
end
|
617
|
+
|
589
618
|
describe '#raise_http_error' do
|
590
|
-
let(:connection_response) { instance_double(Typhoeus::Response, request: instance_double(Typhoeus::Request)) }
|
619
|
+
let(:connection_response) { instance_double(Typhoeus::Response, request: instance_double(Typhoeus::Request), timed_out?: false) }
|
591
620
|
let(:response) { RemoteResource::Response.new(connection_response, connection_options) }
|
592
621
|
|
622
|
+
context 'when the response has timed out' do
|
623
|
+
let(:connection_response) { instance_double(Typhoeus::Response, request: instance_double(Typhoeus::Request), timed_out?: true) }
|
624
|
+
|
625
|
+
it 'raises a RemoteResource::HTTPRequestTimeout' do
|
626
|
+
expect { request.send(:raise_http_error, request, response) }.to raise_error RemoteResource::HTTPRequestTimeout
|
627
|
+
end
|
628
|
+
end
|
629
|
+
|
593
630
|
context 'when the response code is 301, 302, 303 or 307' do
|
594
631
|
response_codes = [301, 302, 303, 307]
|
595
632
|
response_codes.each do |response_code|
|
@@ -645,6 +682,17 @@ RSpec.describe RemoteResource::Request do
|
|
645
682
|
end
|
646
683
|
end
|
647
684
|
|
685
|
+
context 'when the response code is 0 and no other error is raised' do
|
686
|
+
it 'raises a RemoteResource::HTTPError with correct error message' do
|
687
|
+
allow(response).to receive(:response_code) { 0 }
|
688
|
+
allow(connection_response).to receive(:return_code) { :ssl_connect }
|
689
|
+
allow(connection_response).to receive(:response_code) { 0 }
|
690
|
+
|
691
|
+
error_message = 'HTTP request failed for RemoteResource::RequestDummy with response_code=0 with return_code=ssl_connect with http_action=get with request_url=http://www.foobar.com/request_dummy.json'
|
692
|
+
expect { request.send(:raise_http_error, request, response) }.to raise_error RemoteResource::HTTPError, error_message
|
693
|
+
end
|
694
|
+
end
|
695
|
+
|
648
696
|
context 'when the response code is nothing and no other error is raised' do
|
649
697
|
it 'raises a RemoteResource::HTTPError' do
|
650
698
|
allow(response).to receive(:response_code) { nil }
|
metadata
CHANGED
@@ -1,29 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddy_remote_resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Digidentity
|
7
8
|
- Jan van der Pas
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2021-11-10 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- - "
|
18
|
+
- - ">="
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
+
version: '0'
|
20
21
|
type: :development
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
|
-
- - "
|
25
|
+
- - ">="
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
+
version: '0'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: rake
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,7 +118,7 @@ dependencies:
|
|
117
118
|
version: '4.1'
|
118
119
|
- - "<"
|
119
120
|
- !ruby/object:Gem::Version
|
120
|
-
version: '
|
121
|
+
version: '7'
|
121
122
|
type: :runtime
|
122
123
|
prerelease: false
|
123
124
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -127,7 +128,7 @@ dependencies:
|
|
127
128
|
version: '4.1'
|
128
129
|
- - "<"
|
129
130
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
131
|
+
version: '7'
|
131
132
|
- !ruby/object:Gem::Dependency
|
132
133
|
name: activemodel
|
133
134
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,7 +138,7 @@ dependencies:
|
|
137
138
|
version: '4.1'
|
138
139
|
- - "<"
|
139
140
|
- !ruby/object:Gem::Version
|
140
|
-
version: '
|
141
|
+
version: '7'
|
141
142
|
type: :runtime
|
142
143
|
prerelease: false
|
143
144
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -147,7 +148,7 @@ dependencies:
|
|
147
148
|
version: '4.1'
|
148
149
|
- - "<"
|
149
150
|
- !ruby/object:Gem::Version
|
150
|
-
version: '
|
151
|
+
version: '7'
|
151
152
|
- !ruby/object:Gem::Dependency
|
152
153
|
name: virtus
|
153
154
|
requirement: !ruby/object:Gem::Requirement
|
@@ -186,30 +187,21 @@ dependencies:
|
|
186
187
|
name: ethon
|
187
188
|
requirement: !ruby/object:Gem::Requirement
|
188
189
|
requirements:
|
189
|
-
- - "~>"
|
190
|
-
- !ruby/object:Gem::Version
|
191
|
-
version: '0.7'
|
192
190
|
- - ">="
|
193
191
|
- !ruby/object:Gem::Version
|
194
|
-
version: 0
|
192
|
+
version: '0'
|
195
193
|
type: :runtime
|
196
194
|
prerelease: false
|
197
195
|
version_requirements: !ruby/object:Gem::Requirement
|
198
196
|
requirements:
|
199
|
-
- - "~>"
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: '0.7'
|
202
197
|
- - ">="
|
203
198
|
- !ruby/object:Gem::Version
|
204
|
-
version: 0
|
199
|
+
version: '0'
|
205
200
|
- !ruby/object:Gem::Dependency
|
206
201
|
name: typhoeus
|
207
202
|
requirement: !ruby/object:Gem::Requirement
|
208
203
|
requirements:
|
209
204
|
- - ">="
|
210
|
-
- !ruby/object:Gem::Version
|
211
|
-
version: 0.7.0
|
212
|
-
- - "~>"
|
213
205
|
- !ruby/object:Gem::Version
|
214
206
|
version: '0.7'
|
215
207
|
type: :runtime
|
@@ -217,9 +209,6 @@ dependencies:
|
|
217
209
|
version_requirements: !ruby/object:Gem::Requirement
|
218
210
|
requirements:
|
219
211
|
- - ">="
|
220
|
-
- !ruby/object:Gem::Version
|
221
|
-
version: 0.7.0
|
222
|
-
- - "~>"
|
223
212
|
- !ruby/object:Gem::Version
|
224
213
|
version: '0.7'
|
225
214
|
- !ruby/object:Gem::Dependency
|
@@ -239,7 +228,7 @@ dependencies:
|
|
239
228
|
description: RemoteResource, a gem to use resources with REST services. A replacement
|
240
229
|
for ActiveResource gem.
|
241
230
|
email:
|
242
|
-
-
|
231
|
+
- development@digidentity.com
|
243
232
|
executables: []
|
244
233
|
extensions: []
|
245
234
|
extra_rdoc_files: []
|
@@ -319,8 +308,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
319
308
|
- !ruby/object:Gem::Version
|
320
309
|
version: '0'
|
321
310
|
requirements: []
|
322
|
-
|
323
|
-
rubygems_version: 2.7.10
|
311
|
+
rubygems_version: 3.2.15
|
324
312
|
signing_key:
|
325
313
|
specification_version: 4
|
326
314
|
summary: RemoteResource, a gem to use resources with REST services.
|