flexirest 1.8.6 → 1.8.7

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: ee0ba7e77c7149e1a5691a9df1f6fd811060c075d15c01b531b7240c6b5b8f94
4
- data.tar.gz: 23c1f0c72c2eb048da0729099f8ca76819fcb01740d1fa424784f3a322b9b538
3
+ metadata.gz: 6fa38d8d7f9ee0f19744e46cfa7a3d0b22eb9d149dce1f5b025beb0f1bbbc6f1
4
+ data.tar.gz: b2ae4157a3f0fdb754d0a5e1599051be5658a6b342fd9b3d588b4d79b7ed312a
5
5
  SHA512:
6
- metadata.gz: 6e36124f12607b062a53bcf7ef424b3aa501bfced4a62c2606ba8a045cef11ed97bbffe49acb6ccd99317f82f5fa2cd2984affcd5c17a0d3277fc6ea979a2101
7
- data.tar.gz: d2be92fdb5aff31371e4851adf9557da3355b042a277b3d10a06b1494a8ff79e0dd72f446a1d00fcb6478c45573b4ae0a8c7fecb46ba18523515e0477cbfcd89
6
+ metadata.gz: 2ada072dd254ce8818178de8dab0f72a676e47c0c39e3bc2419b33c3c81ba64e2e9a428bedc42ddcd95d785a2ae3fcafdcecd52fe4f6935e4dd6e0fdc31d7c83
7
+ data.tar.gz: eb67f39a6697f1e0e48ae8a11037c275f631334d59df36b243e2d5ae2a20e798c8fd614d4a1bb69a561f84db2452af2b6bae417df903b0c0a99b264d9a0555df
@@ -1,10 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.8.7
4
+
5
+ Fix:
6
+
7
+ - URL parameters should be automatically required or you end up requesting incorrect URLs (thanks to Marko Kind, @m-kind for the issue).
8
+
3
9
  ## 1.8.6
4
10
 
5
11
  Fix:
6
12
 
7
- - Correct HTTP status code for too many requests (thanks to Tomohiko Mimura, @mito5525) for spotting this.
13
+ - Correct HTTP status code for too many requests (thanks to Tomohiko Mimura, @mito5525 for spotting this).
8
14
 
9
15
  ## 1.8.5
10
16
 
@@ -10,7 +10,7 @@ Flexirest::Base.adapter = :patron
10
10
 
11
11
  In versions before 1.2.0 the adapter was hardcoded to `:patron`, so if you want to ensure it still uses Patron, you should set this setting.
12
12
 
13
- If you want more control you can pass a **complete** configuration block ("complete" means that the block does not _override_ [the default configuration](https://github.com/flexirest/flexirest/blob/5b1953d89e26c02ca74f74464ccb7cd4c9439dcc/lib/flexirest/configuration.rb#L184-L201), but rather _replaces_ it).
13
+ If you want more control you can pass a **complete** configuration block ("complete" means that the block does not _override_ [the default configuration](https://github.com/flexirest/flexirest/blob/master/lib/flexirest/configuration.rb#L292), but rather _replaces_ it).
14
14
 
15
15
  For available configuration variables look into the [Faraday documentation](https://github.com/lostisland/faraday).
16
16
 
@@ -26,14 +26,14 @@ module Flexirest
26
26
  block.call
27
27
  rescue Faraday::Error::TimeoutError
28
28
  raise Flexirest::TimeoutException.new("Timed out getting #{full_url(path)}")
29
- rescue Faraday::Error::ConnectionFailed => e1
29
+ rescue Faraday::ConnectionFailed => e1
30
30
  if e1.respond_to?(:cause) && e1.cause.is_a?(Net::OpenTimeout)
31
31
  raise Flexirest::TimeoutException.new("Timed out getting #{full_url(path)}")
32
32
  end
33
33
  begin
34
34
  reconnect
35
35
  block.call
36
- rescue Faraday::Error::ConnectionFailed => e2
36
+ rescue Faraday::ConnectionFailed => e2
37
37
  if e2.respond_to?(:cause) && e2.cause.is_a?(Net::OpenTimeout)
38
38
  raise Flexirest::TimeoutException.new("Timed out getting #{full_url(path)}")
39
39
  end
@@ -353,6 +353,7 @@ module Flexirest
353
353
  end
354
354
 
355
355
  def prepare_url
356
+ missing = []
356
357
  if @forced_url && @forced_url.present?
357
358
  @url = @forced_url
358
359
  else
@@ -368,9 +369,16 @@ module Flexirest
368
369
  # it's possible the URL path variable may not be part of the request, in that case, try to resolve it from the object attributes
369
370
  target = @object._attributes[token.to_sym] || "" if target == ""
370
371
  end
372
+ if target.to_s.blank?
373
+ missing << token
374
+ end
371
375
  @url.gsub!(":#{token}", URI.escape(target.to_s).gsub("/", "%2F").gsub("+", "%2B"))
372
376
  end
373
377
  end
378
+
379
+ if missing.present?
380
+ raise Flexirest::MissingParametersException.new("The following parameters weren't specifed: #{missing.join(", ")}")
381
+ end
374
382
  end
375
383
 
376
384
  def append_get_parameters
@@ -1,3 +1,3 @@
1
1
  module Flexirest
2
- VERSION = "1.8.6"
2
+ VERSION = "1.8.7"
3
3
  end
@@ -37,6 +37,7 @@ describe Flexirest::Request do
37
37
  put :headers_default, "/headers_default"
38
38
  put :headers_json, "/headers_json", request_body_type: :json
39
39
  get :find, "/:id", required: [:id]
40
+ get :find_cat, "/:id/cat"
40
41
  get :change, "/change"
41
42
  get :plain, "/plain/:id", plain: true
42
43
  post :create, "/create", rubify_names: true
@@ -288,6 +289,16 @@ describe Flexirest::Request do
288
289
  expect{ExampleClient.requires name: nil, age: nil}.to raise_error(Flexirest::MissingParametersException)
289
290
  end
290
291
 
292
+ it "should ensure any URL parameters are implicitly required and error if not specified" do
293
+ expect_any_instance_of(Flexirest::Connection).to_not receive(:get)
294
+ expect{ExampleClient.find_cat}.to raise_error(Flexirest::MissingParametersException)
295
+ end
296
+
297
+ it "should ensure any URL parameters are implicitly required and make the request if specified" do
298
+ expect_any_instance_of(Flexirest::Connection).to receive(:get).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
299
+ expect{ExampleClient.find_cat(1)}.to_not raise_error
300
+ end
301
+
291
302
  it "should makes the request if all required parameters are specified" do
292
303
  expect_any_instance_of(Flexirest::Connection).to receive(:get).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
293
304
  expect{ExampleClient.requires name: "John", age: 21}.not_to raise_error
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.8.6
4
+ version: 1.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Jeffries
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-30 00:00:00.000000000 Z
11
+ date: 2019-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler