flexirest 1.3.13 → 1.3.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +2 -0
- data/lib/flexirest/plain_response.rb +13 -0
- data/lib/flexirest/request.rb +1 -1
- data/lib/flexirest/version.rb +1 -1
- data/lib/flexirest.rb +1 -0
- data/spec/lib/base_spec.rb +6 -0
- data/spec/lib/plain_response_spec.rb +21 -0
- data/spec/lib/request_spec.rb +6 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb527b4e0686f41868c0c0074ca60f38c890367b
|
4
|
+
data.tar.gz: d61137bb423545b4f30a915beff69184988eb8f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 344f2accd4f6446496d370879be78d0e2412dd77ee2cec427846503031a626afc1d0f73961ce2a26dca452a15a50c5cc3ec9d5620addda6936b90eced45b8049
|
7
|
+
data.tar.gz: 9cf9485402e1bbcab606f3cbe59be7c1dc07987935f14706e7385aa26e3f46155926599dbcc3109ee2e91c61efe2757c763413780fa5cb7e1b372b2152a9ef8c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.3.14
|
4
|
+
|
5
|
+
Feature:
|
6
|
+
|
7
|
+
- Plain Requests (both using the `plain: true` option to mapped methods and using `_plain_request`) return a `Flexirest::PlainResponse` which is string-like for all intents and purposes (it's comparable with strings using the body of the response) and also has `_status` and `_headers` methods (thanks to Rui Ribeiro for the request/inspiration).
|
8
|
+
|
3
9
|
## 1.3.13
|
4
10
|
|
5
11
|
Feature:
|
data/README.md
CHANGED
@@ -696,6 +696,8 @@ class Person < Flexirest::Base
|
|
696
696
|
end
|
697
697
|
```
|
698
698
|
|
699
|
+
The response of a plain request (from either source) is a `Flexirest::PlainResponse` which acts like a string containing the response's body, but it also has a `_headers` method that returns the HTTP response headers and a `_status` method containing the response's HTTP method.
|
700
|
+
|
699
701
|
### Proxying APIs
|
700
702
|
|
701
703
|
Sometimes you may be working with an old API that returns JSON in a less than ideal format or the URL or parameters required have changed. In this case you can define a descendent of `Flexirest::ProxyBase`, pass it to your model as the proxy and have it rework URLs/parameters on the way out and the response on the way back in (already converted to a Ruby hash/array). By default any non-proxied URLs are just passed through to the underlying connection layer. For example:
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Flexirest
|
2
|
+
class PlainResponse < ::String
|
3
|
+
attr_accessor :_status
|
4
|
+
attr_accessor :_headers
|
5
|
+
|
6
|
+
def self.from_response(response)
|
7
|
+
plain = self.new(response.body)
|
8
|
+
plain._status = response.status
|
9
|
+
plain._headers = response.response_headers
|
10
|
+
plain
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/flexirest/request.rb
CHANGED
@@ -388,7 +388,7 @@ module Flexirest
|
|
388
388
|
|
389
389
|
if (200..399).include?(status)
|
390
390
|
if @method[:options][:plain]
|
391
|
-
return @response = response
|
391
|
+
return @response = Flexirest::PlainResponse.from_response(response)
|
392
392
|
elsif is_json_response? || is_xml_response?
|
393
393
|
if @response.respond_to?(:proxied) && @response.proxied
|
394
394
|
Flexirest::Logger.debug " \033[1;4;32m#{Flexirest.name}\033[0m #{@instrumentation_name} - Response was proxied, unable to determine size"
|
data/lib/flexirest/version.rb
CHANGED
data/lib/flexirest.rb
CHANGED
data/spec/lib/base_spec.rb
CHANGED
@@ -300,6 +300,12 @@ describe Flexirest::Base do
|
|
300
300
|
expect(EmptyExample._plain_request("http://api.example.com/", :post, {id:1234})).to eq(response_body)
|
301
301
|
end
|
302
302
|
|
303
|
+
it "should return a PlainResponse from the directly called URL bypassing JSON loading" do
|
304
|
+
response_body = "This is another non-JSON string"
|
305
|
+
expect_any_instance_of(Flexirest::Connection).to receive(:post).with(any_args).and_return(::FaradayResponseMock.new(OpenStruct.new(status:200, response_headers:{}, body:response_body)))
|
306
|
+
expect(EmptyExample._plain_request("http://api.example.com/", :post, {id:1234})).to be_a(Flexirest::PlainResponse)
|
307
|
+
end
|
308
|
+
|
303
309
|
context "Simulating Faraday connection in_parallel" do
|
304
310
|
it "should be able to pass the plain response from the directly called URL bypassing JSON loading" do
|
305
311
|
response_body = "This is another non-JSON string"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Flexirest::PlainResponse do
|
4
|
+
let(:response) { OpenStruct.new(status:200, body:"fake response", response_headers:{"X-ARC-Faked-Response" => "true", "Content-Type" => "application/json"}) }
|
5
|
+
|
6
|
+
it "is comparable to a string" do
|
7
|
+
expect(Flexirest::PlainResponse.new("test")).to eq "test"
|
8
|
+
end
|
9
|
+
|
10
|
+
it "can be instantiated from a response" do
|
11
|
+
expect(Flexirest::PlainResponse.from_response(response)).to eq "fake response"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns the response's status" do
|
15
|
+
expect(Flexirest::PlainResponse.from_response(response)._status).to eq 200
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns the response's headers" do
|
19
|
+
expect(Flexirest::PlainResponse.from_response(response)._headers["Content-Type"]).to eq "application/json"
|
20
|
+
end
|
21
|
+
end
|
data/spec/lib/request_spec.rb
CHANGED
@@ -267,6 +267,12 @@ describe Flexirest::Request do
|
|
267
267
|
expect(ExampleClient.plain(id:1234)).to eq(response_body)
|
268
268
|
end
|
269
269
|
|
270
|
+
it "should return a PlainResponse from a plain request" do
|
271
|
+
response_body = "This is another non-JSON string"
|
272
|
+
expect_any_instance_of(Flexirest::Connection).to receive(:get).with(any_args).and_return(::FaradayResponseMock.new(OpenStruct.new(status:200, response_headers:{}, body:response_body)))
|
273
|
+
expect(ExampleClient.plain(id:1234)).to be_a(Flexirest::PlainResponse)
|
274
|
+
end
|
275
|
+
|
270
276
|
it "should return a lazy loader object if lazy loading is enabled" do
|
271
277
|
object = LazyLoadedExampleClient.fake id:1234, debug:true
|
272
278
|
expect(object).to be_an_instance_of(Flexirest::LazyLoader)
|
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.3.
|
4
|
+
version: 1.3.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Jeffries
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -243,6 +243,7 @@ files:
|
|
243
243
|
- lib/flexirest/logger.rb
|
244
244
|
- lib/flexirest/mapping.rb
|
245
245
|
- lib/flexirest/monkey_patching.rb
|
246
|
+
- lib/flexirest/plain_response.rb
|
246
247
|
- lib/flexirest/proxy_base.rb
|
247
248
|
- lib/flexirest/recording.rb
|
248
249
|
- lib/flexirest/request.rb
|
@@ -265,6 +266,7 @@ files:
|
|
265
266
|
- spec/lib/lazy_loader_spec.rb
|
266
267
|
- spec/lib/logger_spec.rb
|
267
268
|
- spec/lib/mapping_spec.rb
|
269
|
+
- spec/lib/plain_response_spec.rb
|
268
270
|
- spec/lib/proxy_spec.rb
|
269
271
|
- spec/lib/recording_spec.rb
|
270
272
|
- spec/lib/request_filtering_spec.rb
|
@@ -315,6 +317,7 @@ test_files:
|
|
315
317
|
- spec/lib/lazy_loader_spec.rb
|
316
318
|
- spec/lib/logger_spec.rb
|
317
319
|
- spec/lib/mapping_spec.rb
|
320
|
+
- spec/lib/plain_response_spec.rb
|
318
321
|
- spec/lib/proxy_spec.rb
|
319
322
|
- spec/lib/recording_spec.rb
|
320
323
|
- spec/lib/request_filtering_spec.rb
|