ddy_remote_resource 1.1.1 → 1.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68b41d6c4490a883cf8a45c157e9b21481979201f03c48b425a4bf197b585023
4
- data.tar.gz: 49732f6fd37dde6a9ee6925cd3fec7c916a35e1135caa69330295a7d9935041a
3
+ metadata.gz: b75b31568bd5a246694f34d65c20226e97c2620f7afd6f11750af62ed594b458
4
+ data.tar.gz: 3bdce3777b2ea4fc6a72371ec9e117a3f41bd304316cd0f8eb064e8fa3c0fa8e
5
5
  SHA512:
6
- metadata.gz: 8eae58c3c4319e9be19b2ae48e211f1f0709f0f0d784f86ae5234bf44bddf10f92542eff20303d4802db8f6fbd70f51b7982ebb80863ec41789bd01a0c690e3a
7
- data.tar.gz: 45744c286779f3a90b257fd5968305c2db6d29be4c11f2cf2d5e05941c477ff838c5e4aa4be95f4bc62537572b7d9f19259faee755c4e4b283340595d57b181b
6
+ metadata.gz: d0c20de26d1ae69f00878158fa2730fffa0cf43a1b6981a55faec3e435950009700fee9d600160698b45b235d9ffa42c8ee8848bb8e5a8eaab6935461976d554
7
+ data.tar.gz: 9cd8475b745edad03b039567d5353b7a7b5077ad4d2721bd91b6b114a35d4a44554d417b060f3a069e20fa911232e5ec080183c1328f09e4e2ea1301713d3025
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .idea/
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.1
1
+ 2.5.3
data/.travis.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.1
3
+ - 2.6.8
@@ -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 then
140
+ when 400
128
141
  raise RemoteResource::HTTPBadRequest.new(request, response)
129
- when 401 then
142
+ when 401
130
143
  raise RemoteResource::HTTPUnauthorized.new(request, response)
131
- when 403 then
144
+ when 403
132
145
  raise RemoteResource::HTTPForbidden.new(request, response)
133
- when 404 then
146
+ when 404
134
147
  raise RemoteResource::HTTPNotFound.new(request, response)
135
- when 405 then
148
+ when 405
136
149
  raise RemoteResource::HTTPMethodNotAllowed.new(request, response)
137
- when 406 then
150
+ when 406
138
151
  raise RemoteResource::HTTPNotAcceptable.new(request, response)
139
- when 408 then
152
+ when 408
140
153
  raise RemoteResource::HTTPRequestTimeout.new(request, response)
141
- when 409 then
154
+ when 409
142
155
  raise RemoteResource::HTTPConflict.new(request, response)
143
- when 410 then
156
+ when 410
144
157
  raise RemoteResource::HTTPGone.new(request, response)
145
- when 418 then
158
+ when 418
146
159
  raise RemoteResource::HTTPTeapot.new(request, response)
147
- when 444 then
160
+ when 444
148
161
  raise RemoteResource::HTTPNoResponse.new(request, response)
149
- when 494 then
162
+ when 494
150
163
  raise RemoteResource::HTTPRequestHeaderTooLarge.new(request, response)
151
- when 495 then
164
+ when 495
152
165
  raise RemoteResource::HTTPCertError.new(request, response)
153
- when 496 then
166
+ when 496
154
167
  raise RemoteResource::HTTPNoCert.new(request, response)
155
- when 497 then
168
+ when 497
156
169
  raise RemoteResource::HTTPToHTTPS.new(request, response)
157
- when 499 then
170
+ when 499
158
171
  raise RemoteResource::HTTPClientClosedRequest.new(request, response)
159
- when 400..499 then
172
+ when 400..499
160
173
  raise RemoteResource::HTTPClientError.new(request, response)
161
- when 500..599 then
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
- alias_method :code, :response_code
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
@@ -1,3 +1,3 @@
1
1
  module RemoteResource
2
- VERSION = '1.1.1'.freeze
2
+ VERSION = '1.2.2'.freeze
3
3
  end
@@ -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 = ['jvanderpas@digidentity.eu']
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', '~> 1.6'
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', '< 6'
31
- spec.add_runtime_dependency 'activemodel', '>= 4.1', '< 6'
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', '~> 0.7', '>= 0.7.1'
35
- spec.add_runtime_dependency 'typhoeus', '~> 0.7', '>= 0.7.0'
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: JSON.generate(expected_request_body), headers: expected_default_headers)
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: JSON.generate(expected_request_body), headers: expected_default_headers.merge({ 'X-Pseudonym' => 'pseudonym' }))
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: JSON.generate(expected_request_body), headers: expected_default_headers)
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: JSON.generate(expected_request_body), headers: expected_default_headers)
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: JSON.generate(expected_request_body), headers: expected_default_headers.merge({ 'X-Pseudonym' => 'pseudonym' }))
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: JSON.generate(expected_request_body), headers: expected_default_headers)
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: JSON.generate(expected_request_body), headers: expected_default_headers.merge({ 'X-Pseudonym' => 'pseudonym' }))
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, body: expected_body, headers: expected_headers).and_call_original
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, body: expected_body, headers: expected_headers).and_call_original
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, body: expected_body, headers: expected_headers).and_call_original
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, body: expected_body, headers: expected_headers).and_call_original
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, body: expected_body, headers: expected_headers).and_call_original
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 }
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe RemoteResource::VERSION do
4
- it { is_expected.to eql '1.1.1' }
4
+ it { is_expected.to eql '1.2.2' }
5
5
  end
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.1.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: 2019-08-19 00:00:00.000000000 Z
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: '1.6'
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: '1.6'
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: '6'
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: '6'
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: '6'
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: '6'
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.7.1
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.7.1
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
- - jvanderpas@digidentity.eu
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
- rubyforge_project:
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.