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 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.