flexirest 1.12.1 → 1.12.3

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: b36abe5b5b35c85e8705681e6ec68792c20b1ec33e44cd94420e7a49a103fb50
4
- data.tar.gz: fa2cf4caa5736b75f53b3bcf7ae61909e448ba75d58c41dfe826a92e616e42ec
3
+ metadata.gz: 61eaaa77dfcbab57b714007844456fe903c759cbb981761a43b7eb4910da3463
4
+ data.tar.gz: 10e7bbe8cc3b35887eb34c32562af637ed8cd4aae34df0547c2e2cd52a730a7e
5
5
  SHA512:
6
- metadata.gz: 6a7b314f07d529deef241d32d750770e51fe2c4fdf32390f3cbbed814d3854d2f1229f6bc138d6b1a6688f7d152ccb330a778dd05298242bae20b9790da09e46
7
- data.tar.gz: 3831f016b5b437374f2ba1a7fd9a9568077ffb71c9e1456359244055990dddb0aaf2a0fae0aa506d03bc8a8c5469ef1ae7809e3f6786e4d9b3a93d09937319a5
6
+ metadata.gz: 251b2a247480a4f7b3c46a70cd469c3ad24cbdb6c245703ec60658ae3429107a7a364eb12e8794c2e28729ebb58e7a17bc1d2fbeebf59a035d5f277032ba7d82
7
+ data.tar.gz: e4fb534d1775963465155761cd4e6b8a7f14e7c66b0f0406d48d39abe4810906c588a9f00fea1b9325b1ed6d1682c9224f47b07c0f75e51b48986d2be43f5e0c
@@ -19,10 +19,10 @@ jobs:
19
19
  runs-on: ubuntu-latest
20
20
  strategy:
21
21
  matrix:
22
- ruby-version: ['3.0', '3.1', '3.2']
22
+ ruby-version: ['3.0', '3.1', '3.2', '3.3']
23
23
 
24
24
  steps:
25
- - uses: actions/checkout@v2
25
+ - uses: actions/checkout@v4
26
26
  - name: Set up Ruby
27
27
  uses: ruby/setup-ruby@v1
28
28
  with:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.12.3
4
+
5
+ Bugfix:
6
+
7
+ - Do not raise undefined method error when ignore_root value is null (thanks to jpawlyn for the PR)
8
+
9
+ ## 1.12.2
10
+
11
+ Bugfix:
12
+
13
+ - Changing the parameters in a `defaults` option to a mapping shouldn't mutate the parameters, meaning that retries should get the same as the original parameters (thanks to vskbjrn for the bug report)
14
+
3
15
  ## 1.12.1
4
16
 
5
17
  Bugfix:
@@ -344,6 +344,8 @@ module Flexirest
344
344
  params = {id:params}
345
345
  end
346
346
 
347
+ params = params.dup
348
+
347
349
  # Format includes parameter for jsonapi
348
350
  if proxy == :json_api
349
351
  JsonAPIProxy::Request::Params.translate(params, @object._include_associations)
@@ -878,14 +880,14 @@ module Flexirest
878
880
 
879
881
  if ignore_root
880
882
  [ignore_root].flatten.each do |key|
881
- body = body[key.to_s] if body.has_key?(key.to_s)
883
+ body = body[key.to_s] || {} if body.has_key?(key.to_s)
882
884
  end
883
885
  end
884
886
  elsif is_xml_response?
885
887
  body = @response.body.blank? ? {} : Crack::XML.parse(@response.body)
886
888
  if ignore_root
887
889
  [ignore_root].flatten.each do |key|
888
- body = body[key.to_s] if body.has_key?(key.to_s)
890
+ body = body[key.to_s] || {} if body.has_key?(key.to_s)
889
891
  end
890
892
  elsif options[:ignore_xml_root]
891
893
  Flexirest::Logger.warn("Using `ignore_xml_root` is deprecated, please switch to `ignore_root`")
@@ -1,3 +1,3 @@
1
1
  module Flexirest
2
- VERSION = "1.12.1"
2
+ VERSION = "1.12.3"
3
3
  end
@@ -81,18 +81,6 @@ describe Flexirest::Configuration do
81
81
  expect(SubConfigurationExample.username).to eq("john")
82
82
  end
83
83
 
84
- it "should escape the username" do
85
- Flexirest::Base.username = "bill@example.com"
86
- expect(Flexirest::Base.username).to eq("bill%40example.com")
87
- Flexirest::Base.username = nil
88
- end
89
-
90
- it "should not doubly escape the username" do
91
- Flexirest::Base.username = "bill%40example.com"
92
- expect(Flexirest::Base.username).to_not eq("bill%2540example.com")
93
- Flexirest::Base.username = nil
94
- end
95
-
96
84
  it "should remember the set password" do
97
85
  expect(ConfigurationExample.password).to eq("smith")
98
86
  end
@@ -107,18 +95,6 @@ describe Flexirest::Configuration do
107
95
  expect(SubConfigurationExample.password).to eq("smith")
108
96
  end
109
97
 
110
- it "should escape the password" do
111
- Flexirest::Base.password = "something@else"
112
- expect(Flexirest::Base.password).to eq("something%40else")
113
- Flexirest::Base.password = nil
114
- end
115
-
116
- it "should not doubly escape the password" do
117
- Flexirest::Base.password = "something%40else"
118
- expect(Flexirest::Base.password).to_not eq("something%2540else")
119
- Flexirest::Base.password = nil
120
- end
121
-
122
98
  it "should default to a form_encoded request_body_type" do
123
99
  expect(Flexirest::Base.request_body_type).to eq(:form_encoded)
124
100
  end
@@ -173,6 +173,13 @@ describe Flexirest::Request do
173
173
  get :second_call, "/second_call"
174
174
  end
175
175
 
176
+ class SimpleRetryingExampleClient < Flexirest::Base
177
+ base_url "http://www.example.com"
178
+ get :all, "/objects", defaults: proc { |params| { type: params.delete(:object_type) } }
179
+
180
+ after_request -> (name, response) { raise Flexirest::CallbackRetryRequestException.new }
181
+ end
182
+
176
183
  class LazyLoadedExampleClient < ExampleClient
177
184
  base_url "http://www.example.com"
178
185
  lazy_load!
@@ -214,6 +221,14 @@ describe Flexirest::Request do
214
221
  }
215
222
  end
216
223
 
224
+ class IgnoredRootWithNullValueExampleClient < ExampleClient
225
+ get :root, "/root", ignore_root: "feed", fake: %Q{
226
+ {
227
+ "feed": null
228
+ }
229
+ }
230
+ end
231
+
217
232
  class IgnoredRootWithUnexpectedResponseExampleClient < ExampleClient
218
233
  get :root, "/root", ignore_root: "feed", fake: %Q{
219
234
  {
@@ -1395,6 +1410,13 @@ describe Flexirest::Request do
1395
1410
  expect(RetryingExampleClient.retries).to eq(2)
1396
1411
  end
1397
1412
 
1413
+ it "shouldn't destructively change params before retrying" do
1414
+ stub_request(:get, "http://www.example.com/objects?type=foo").
1415
+ to_return(status: 200, body: "", headers: {})
1416
+ SimpleRetryingExampleClient.all(object_type: 'foo')
1417
+
1418
+ expect(WebMock).to have_requested(:get, "www.example.com/objects?type=foo").twice
1419
+ end
1398
1420
 
1399
1421
  context "Direct URL requests" do
1400
1422
  class SameServerExampleClient < Flexirest::Base
@@ -1573,6 +1595,10 @@ describe Flexirest::Request do
1573
1595
  expect(IgnoredRootExampleClient.root.title).to eq("Example Feed")
1574
1596
  end
1575
1597
 
1598
+ it "should not raise an error if ignore_root value is null" do
1599
+ expect(IgnoredRootWithNullValueExampleClient.root).to be_instance_of(IgnoredRootWithNullValueExampleClient)
1600
+ end
1601
+
1576
1602
  it "should ignore an ignore_root parameter if the specified element is not in the response" do
1577
1603
  expect(IgnoredRootWithUnexpectedResponseExampleClient.root.error.message).to eq("Example Error")
1578
1604
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flexirest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.1
4
+ version: 1.12.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Jeffries
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-09 00:00:00.000000000 Z
11
+ date: 2024-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -407,7 +407,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
407
407
  - !ruby/object:Gem::Version
408
408
  version: '0'
409
409
  requirements: []
410
- rubygems_version: 3.4.10
410
+ rubygems_version: 3.5.6
411
411
  signing_key:
412
412
  specification_version: 4
413
413
  summary: This gem is for accessing REST services in a flexible way. ActiveResource