flexirest 1.7.2 → 1.7.3
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 +4 -4
- data/CHANGELOG.md +10 -0
- data/docs/using-callbacks.md +2 -0
- data/lib/flexirest/callbacks.rb +3 -0
- data/lib/flexirest/request.rb +11 -3
- data/lib/flexirest/version.rb +1 -1
- data/spec/lib/request_spec.rb +17 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4588448f89d5370f5b208ad7185537c4c70fac4d
|
4
|
+
data.tar.gz: b496d2852fdacc8ef9656656e96a5a469419de4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 055f11c39ba735be43fdb5bebabb77d9c1912fded9cfe0040c06dfe4b12b33f093b8dc60295cb8abf7ccd8bac4ffd40b0729e6b47bd179b262818848e12490d6
|
7
|
+
data.tar.gz: c131e203c28350206d3f18ddaeb0c6610b099f192e8c85d7f29756343da06bdcd1875636067465ff136d750a12ed23d7690bc7bcadead01cc7380f85fe7f2a89
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.7.3
|
4
|
+
|
5
|
+
Bugfix:
|
6
|
+
|
7
|
+
- Form encoded requests should also honour `wrap_root` (thanks to noctivityinc for the issue report)
|
8
|
+
|
9
|
+
Feature:
|
10
|
+
|
11
|
+
- Returning `false` from a callback will halt the callback chain and cancel the request (thanks to noctivityinc for the feature request)
|
12
|
+
|
3
13
|
## 1.7.2
|
4
14
|
|
5
15
|
Bugfix:
|
data/docs/using-callbacks.md
CHANGED
@@ -108,6 +108,8 @@ class Person < Flexirest::Base
|
|
108
108
|
end
|
109
109
|
```
|
110
110
|
|
111
|
+
If you want to cancel the request from within a callback, you can simply return `false` and the mapped method result will also be `false`, however, we would normally advocate raising an exception so the reason for the callback failure is more explicit.
|
112
|
+
|
111
113
|
|
112
114
|
-----
|
113
115
|
|
data/lib/flexirest/callbacks.rb
CHANGED
data/lib/flexirest/request.rb
CHANGED
@@ -192,10 +192,14 @@ module Flexirest
|
|
192
192
|
return handle_response(OpenStruct.new(status:200, body:fake, response_headers:{"X-ARC-Faked-Response" => "true", "Content-Type" => content_type}))
|
193
193
|
end
|
194
194
|
if object_is_class?
|
195
|
-
@object.send(:_callback_request, :before, @method[:name], self)
|
195
|
+
callback_result = @object.send(:_callback_request, :before, @method[:name], self)
|
196
196
|
else
|
197
|
-
@object.class.send(:_callback_request, :before, @method[:name], self)
|
197
|
+
callback_result = @object.class.send(:_callback_request, :before, @method[:name], self)
|
198
198
|
end
|
199
|
+
if callback_result == false
|
200
|
+
return false
|
201
|
+
end
|
202
|
+
|
199
203
|
append_get_parameters
|
200
204
|
prepare_request_body
|
201
205
|
self.original_url = self.url
|
@@ -405,7 +409,11 @@ module Flexirest
|
|
405
409
|
elsif @post_params.is_a?(String)
|
406
410
|
@post_params
|
407
411
|
else
|
408
|
-
(params || @post_params || {})
|
412
|
+
p = (params || @post_params || {})
|
413
|
+
if @method[:options][:wrap_root].present?
|
414
|
+
p = {@method[:options][:wrap_root] => p}
|
415
|
+
end
|
416
|
+
p.to_query
|
409
417
|
end
|
410
418
|
headers["Content-Type"] ||= "application/x-www-form-urlencoded"
|
411
419
|
elsif request_body_type == :json
|
data/lib/flexirest/version.rb
CHANGED
data/spec/lib/request_spec.rb
CHANGED
@@ -15,6 +15,12 @@ describe Flexirest::Request do
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
+
before_request do |name, request|
|
19
|
+
if request.method[:name] == :cancel_callback
|
20
|
+
false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
18
24
|
after_request do |name, response|
|
19
25
|
if name == :change
|
20
26
|
response.body = "{\"test\": 1}"
|
@@ -27,6 +33,7 @@ describe Flexirest::Request do
|
|
27
33
|
get :babies, "/babies", :has_many => {:children => ExampleOtherClient}
|
28
34
|
get :single_association, "/single", :has_one => {:single => ExampleSingleClient}, :has_many => {:children => ExampleOtherClient}
|
29
35
|
get :headers, "/headers"
|
36
|
+
get :cancel_callback, "/cancel-callback"
|
30
37
|
put :headers_default, "/headers_default"
|
31
38
|
put :headers_json, "/headers_json", request_body_type: :json
|
32
39
|
get :find, "/:id", required: [:id]
|
@@ -290,6 +297,11 @@ describe Flexirest::Request do
|
|
290
297
|
ExampleClient.update id:1234, debug:true
|
291
298
|
end
|
292
299
|
|
300
|
+
it "should pass through url parameters and get parameters" do
|
301
|
+
expect_any_instance_of(Flexirest::Connection).to_not receive(:get)
|
302
|
+
ExampleClient.cancel_callback
|
303
|
+
end
|
304
|
+
|
293
305
|
it "should pass through 'array type' get parameters" do
|
294
306
|
expect_any_instance_of(Flexirest::Connection).to receive(:get).with("/?include%5B%5D=your&include%5B%5D=friends", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", response_headers:{})))
|
295
307
|
ExampleClient.all :include => [:your,:friends]
|
@@ -317,6 +329,11 @@ describe Flexirest::Request do
|
|
317
329
|
ExampleClient.wrapped id:1234, debug:true, test:'foo'
|
318
330
|
end
|
319
331
|
|
332
|
+
it "should wrap elements if specified, in form-encoded format" do
|
333
|
+
expect_any_instance_of(Flexirest::Connection).to receive(:put).with("/put/1234", %q(example%5Bdebug%5D=true&example%5Btest%5D=foo), an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", response_headers:{})))
|
334
|
+
ExampleClient.wrapped id:1234, debug:true, test:'foo'
|
335
|
+
end
|
336
|
+
|
320
337
|
it "should not pass through an encoded empty body parameter" do
|
321
338
|
expect_any_instance_of(Flexirest::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", response_headers:{})))
|
322
339
|
ExampleClient.request_body_type :json
|
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.7.
|
4
|
+
version: 1.7.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: 2018-
|
11
|
+
date: 2018-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|