flexirest 1.4.5 → 1.4.6
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 +6 -0
- data/README.md +7 -0
- data/lib/flexirest/request.rb +5 -2
- data/lib/flexirest/version.rb +1 -1
- data/spec/lib/request_spec.rb +11 -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: f0179b1032c7c9c28be5895b6dc2f6268924469b
|
4
|
+
data.tar.gz: b2096625168b34e7dbe4509363546426cafd1899
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dd4e5f49b2ee856235101eb2a4039fb3200cbdcde7e5880346724a541c72452f3174a071684291decc91c16fa2c541b1086af984735ae634ff981849c4384a4
|
7
|
+
data.tar.gz: aa4c442cb8646e480249122168c50a8bf81748e4273d225526d08b8e39bf883d29a8a674e27b7e65f7f85183c4caa5fce605ffe2cf8ba861f150bae746c44a22
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -94,6 +94,7 @@ class Person < Flexirest::Base
|
|
94
94
|
get :find, "/people/:id"
|
95
95
|
put :save, "/people/:id"
|
96
96
|
post :create, "/people"
|
97
|
+
delete :remove, "/people/:id"
|
97
98
|
end
|
98
99
|
```
|
99
100
|
|
@@ -129,6 +130,12 @@ id = @person.id
|
|
129
130
|
end
|
130
131
|
```
|
131
132
|
|
133
|
+
For `delete` requests whether an API can handle a body or not is undefined. The default is to ignore any parameters not sent in the URL named parameters, but you can optionally specify `send_delete_body` and it will encode them in your chosen way into the body.
|
134
|
+
|
135
|
+
```
|
136
|
+
delete :remove, "/people/:id", send_delete_body: true
|
137
|
+
```
|
138
|
+
|
132
139
|
If an API returns an array of results and you have [will_paginate](https://rubygems.org/gems/will_paginate) installed then you can call the paginate method to return a particular page of the results (note: this doesn't reduce the load on the server, but it can help with pagination if you have a cached response).
|
133
140
|
|
134
141
|
```ruby
|
data/lib/flexirest/request.rb
CHANGED
@@ -249,6 +249,9 @@ module Flexirest
|
|
249
249
|
if http_method == :get
|
250
250
|
@get_params = default_params.merge(params || {})
|
251
251
|
@post_params = nil
|
252
|
+
elsif http_method == :delete && @method[:options][:send_delete_body]
|
253
|
+
@post_params = default_params.merge(params || {})
|
254
|
+
@get_params = {}
|
252
255
|
else
|
253
256
|
@post_params = default_params.merge(params || {})
|
254
257
|
@get_params = {}
|
@@ -335,7 +338,7 @@ module Flexirest
|
|
335
338
|
|
336
339
|
def prepare_request_body(params = nil)
|
337
340
|
if proxy == :json_api
|
338
|
-
if http_method == :get || http_method == :delete
|
341
|
+
if http_method == :get || (http_method == :delete && !@method[:options][:send_delete_body])
|
339
342
|
@body = ""
|
340
343
|
else
|
341
344
|
headers["Content-Type"] ||= "application/vnd.api+json"
|
@@ -344,7 +347,7 @@ module Flexirest
|
|
344
347
|
|
345
348
|
headers["Accept"] ||= "application/vnd.api+json"
|
346
349
|
JsonAPIProxy::Headers.save(headers)
|
347
|
-
elsif http_method == :get || http_method == :delete
|
350
|
+
elsif http_method == :get || (http_method == :delete && !@method[:options][:send_delete_body])
|
348
351
|
@body = ""
|
349
352
|
elsif request_body_type == :form_encoded
|
350
353
|
@body ||= (params || @post_params || {}).to_query
|
data/lib/flexirest/version.rb
CHANGED
data/spec/lib/request_spec.rb
CHANGED
@@ -37,6 +37,7 @@ describe Flexirest::Request do
|
|
37
37
|
put :update, "/put/:id"
|
38
38
|
put :conversion, "/put/:id", parse_fields: [:converted]
|
39
39
|
delete :remove, "/remove/:id"
|
40
|
+
delete :remove_body, "/remove/:id", send_delete_body: true
|
40
41
|
get :hal, "/hal", fake:"{\"_links\":{\"child\": {\"href\": \"/child/1\"}, \"other\": {\"href\": \"/other/1\"}, \"cars\":[{\"href\": \"/car/1\", \"name\":\"car1\"}, {\"href\": \"/car/2\", \"name\":\"car2\"}, {\"href\": \"/car/not-embed\", \"name\":\"car_not_embed\"} ], \"lazy\": {\"href\": \"/lazy/load\"}, \"invalid\": [{\"href\": \"/invalid/1\"}]}, \"_embedded\":{\"other\":{\"name\":\"Jane\"},\"child\":{\"name\":\"Billy\"}, \"cars\":[{\"_links\": {\"self\": {\"href\": \"/car/1\"} }, \"make\": \"Bugatti\", \"model\": \"Veyron\"}, {\"_links\": {\"self\": {\"href\": \"/car/2\"} }, \"make\": \"Ferrari\", \"model\": \"F458 Italia\"} ], \"invalid\": [{\"present\":true, \"_links\": {} } ] } }", has_many:{other:ExampleOtherClient}
|
41
42
|
get :fake, "/fake", fake:"{\"result\":true, \"list\":[1,2,3,{\"test\":true}], \"child\":{\"grandchild\":{\"test\":true}}}"
|
42
43
|
get :fake_proc, "/fake", fake:->(request) { "{\"result\":#{request.get_params[:id]}}" }
|
@@ -150,6 +151,16 @@ describe Flexirest::Request do
|
|
150
151
|
ExampleClient.remove(id:1)
|
151
152
|
end
|
152
153
|
|
154
|
+
it "should get an HTTP connection when called and call delete with a body if send_delete_body is specified" do
|
155
|
+
expect_any_instance_of(Flexirest::Connection).to receive(:delete).with("/remove/1", "something=else", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
156
|
+
ExampleClient.remove_body(id:1, something: "else")
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should get an HTTP connection when called and call delete without a body if send_delete_body is not specified" do
|
160
|
+
expect_any_instance_of(Flexirest::Connection).to receive(:delete).with("/remove/1", "", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
161
|
+
ExampleClient.remove(id:1, something: "else")
|
162
|
+
end
|
163
|
+
|
153
164
|
it "should work with faraday response objects" do
|
154
165
|
response = Faraday::Response.new
|
155
166
|
allow(response).to receive(:body).and_return({}.to_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.4.
|
4
|
+
version: 1.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Jeffries
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|