flexirest 1.5.2 → 1.5.3
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 +6 -0
- data/lib/flexirest/base.rb +6 -6
- data/lib/flexirest/request.rb +5 -5
- data/lib/flexirest/version.rb +1 -1
- data/spec/lib/base_spec.rb +19 -12
- data/spec/lib/request_spec.rb +10 -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: 499dd67a747959e769fab4e11aa7ee9eed6599b8
|
4
|
+
data.tar.gz: 632be3df00eae719a6238d312d29c1dae4bef214
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63f8eaaa04a862b48151effef441782ac3917cb71417834cb4cfcfbe84586907c7f45c47b33846a7a22a5bdf1584d68124a6ac6a5c2fc5becfc9a00da37f622b
|
7
|
+
data.tar.gz: 38c540be4278f892a9bc2461c2c7b0e12b9f3074c8b90202be880aed496056c6ad258475b713ae8a86877787814f45e739739d659deed3fcb899adb00d00de9b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -793,6 +793,12 @@ people = Person._request('http://api.example.com/v1/people') # Defaults to get w
|
|
793
793
|
Person._request('http://api.example.com/v1/people', :post, {id:1234,name:"John"}) # Post with parameters
|
794
794
|
```
|
795
795
|
|
796
|
+
When you need to specify custom headers (for example for authentication) you can do this with a fourth option to the `_request` method. If you are using the default paramaters you'll need to specify them. For example:
|
797
|
+
|
798
|
+
```ruby
|
799
|
+
Person._request("http://api.example.com/v1/people", :get, {}, {"X-Something": "foo/bar"})
|
800
|
+
```
|
801
|
+
|
796
802
|
If you want to use a lazy loaded request instead (so it will create an object that will only call the API if you use it), you can use `_lazy_request` instead of `_request`. If you want you can create a construct that creates and object that lazy loads itself from a given method (rather than a URL):
|
797
803
|
|
798
804
|
```ruby
|
data/lib/flexirest/base.rb
CHANGED
@@ -66,16 +66,16 @@ module Flexirest
|
|
66
66
|
@attributes[:errors] || (_errors != {} ? _errors : nil)
|
67
67
|
end
|
68
68
|
|
69
|
-
def self._request(request, method = :get, params = nil)
|
70
|
-
prepare_direct_request(request, method).call(params)
|
69
|
+
def self._request(request, method = :get, params = nil, headers = {})
|
70
|
+
prepare_direct_request(request, method, headers: headers).call(params)
|
71
71
|
end
|
72
72
|
|
73
|
-
def self._plain_request(request, method = :get, params = nil)
|
74
|
-
prepare_direct_request(request, method, plain:true).call(params)
|
73
|
+
def self._plain_request(request, method = :get, params = nil, headers = {})
|
74
|
+
prepare_direct_request(request, method, plain:true, headers: headers).call(params)
|
75
75
|
end
|
76
76
|
|
77
|
-
def self._lazy_request(request, method = :get, params = nil)
|
78
|
-
Flexirest::LazyLoader.new(prepare_direct_request(request, method), params)
|
77
|
+
def self._lazy_request(request, method = :get, params = nil, headers = {})
|
78
|
+
Flexirest::LazyLoader.new(prepare_direct_request(request, method, headers: headers), params)
|
79
79
|
end
|
80
80
|
|
81
81
|
def self.prepare_direct_request(request, method = :get, options={})
|
data/lib/flexirest/request.rb
CHANGED
@@ -21,6 +21,9 @@ module Flexirest
|
|
21
21
|
@response_delegate = Flexirest::RequestDelegator.new(nil)
|
22
22
|
@params = params
|
23
23
|
@headers = HeadersList.new
|
24
|
+
(@method[:options][:headers] || {}).each do |k,v|
|
25
|
+
@headers[k] = v
|
26
|
+
end
|
24
27
|
@forced_url = nil
|
25
28
|
end
|
26
29
|
|
@@ -463,6 +466,7 @@ module Flexirest
|
|
463
466
|
def handle_response(response, cached = nil)
|
464
467
|
@response = response
|
465
468
|
status = @response.status || 200
|
469
|
+
@response.body = "{}" if @response.body.blank?
|
466
470
|
|
467
471
|
if cached && response.status == 304
|
468
472
|
Flexirest::Logger.debug " \033[1;4;32m#{Flexirest.name}\033[0m #{@instrumentation_name}" +
|
@@ -471,12 +475,8 @@ module Flexirest
|
|
471
475
|
end
|
472
476
|
|
473
477
|
if (200..399).include?(status)
|
474
|
-
if @response.body.blank?
|
475
|
-
@response.body = "{}"
|
476
|
-
end
|
477
|
-
|
478
478
|
if @method[:options][:plain]
|
479
|
-
return @response = Flexirest::PlainResponse.from_response(response)
|
479
|
+
return @response = Flexirest::PlainResponse.from_response(@response)
|
480
480
|
elsif is_json_response? || is_xml_response?
|
481
481
|
if @response.respond_to?(:proxied) && @response.proxied
|
482
482
|
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/spec/lib/base_spec.rb
CHANGED
@@ -57,17 +57,17 @@ describe Flexirest::Base do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should save attributes passed in constructor" do
|
60
|
-
client = EmptyExample.new(:
|
60
|
+
client = EmptyExample.new(test: "Something")
|
61
61
|
expect(client._attributes[:test]).to be_a(String)
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should allow attribute reading using missing method names" do
|
65
|
-
client = EmptyExample.new(:
|
65
|
+
client = EmptyExample.new(test: "Something")
|
66
66
|
expect(client.test).to eq("Something")
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should allow attribute reading using [] array notation" do
|
70
|
-
client = EmptyExample.new(:
|
70
|
+
client = EmptyExample.new(test: "Something")
|
71
71
|
expect(client["test"]).to eq("Something")
|
72
72
|
end
|
73
73
|
|
@@ -85,37 +85,37 @@ describe Flexirest::Base do
|
|
85
85
|
|
86
86
|
it "should automatically parse ISO 8601 format date and time" do
|
87
87
|
t = Time.now
|
88
|
-
client = EmptyExample.new(:
|
88
|
+
client = EmptyExample.new(test: t.iso8601)
|
89
89
|
expect(client["test"]).to be_an_instance_of(DateTime)
|
90
90
|
expect(client["test"].to_s).to eq(t.to_datetime.to_s)
|
91
91
|
end
|
92
92
|
|
93
93
|
it "should automatically parse ISO 8601 format date and time with milliseconds" do
|
94
94
|
t = Time.now
|
95
|
-
client = EmptyExample.new(:
|
95
|
+
client = EmptyExample.new(test: t.iso8601(3))
|
96
96
|
expect(client["test"]).to be_an_instance_of(DateTime)
|
97
97
|
expect(client["test"].to_s).to eq(t.to_datetime.to_s)
|
98
98
|
end
|
99
99
|
|
100
100
|
it "should automatically parse ISO 8601 format dates" do
|
101
101
|
d = Date.today
|
102
|
-
client = EmptyExample.new(:
|
102
|
+
client = EmptyExample.new(test: d.iso8601)
|
103
103
|
expect(client["test"]).to be_an_instance_of(Date)
|
104
104
|
expect(client["test"]).to eq(d)
|
105
105
|
end
|
106
106
|
|
107
107
|
it "should automatically parse date/time strings regardless if the date portion has no delimiters" do
|
108
|
-
client = EmptyExample.new(:
|
108
|
+
client = EmptyExample.new(test: "20151230T09:48:50-05:00")
|
109
109
|
expect(client["test"]).to be_an_instance_of(DateTime)
|
110
110
|
end
|
111
111
|
|
112
112
|
it "should allow strings of 4 digits and not intepret them as dates" do
|
113
|
-
client = EmptyExample.new(:
|
113
|
+
client = EmptyExample.new(test: "2015")
|
114
114
|
expect(client["test"]).to be_an_instance_of(String)
|
115
115
|
end
|
116
116
|
|
117
117
|
it "should allow strings of 8 digits and not intepret them as dates" do
|
118
|
-
client = EmptyExample.new(:
|
118
|
+
client = EmptyExample.new(test: "1266129")
|
119
119
|
expect(client["test"]).to be_an_instance_of(String)
|
120
120
|
end
|
121
121
|
|
@@ -163,7 +163,7 @@ describe Flexirest::Base do
|
|
163
163
|
end
|
164
164
|
|
165
165
|
it "should overwrite attributes already set and mark them as dirty" do
|
166
|
-
client = EmptyExample.new(:
|
166
|
+
client = EmptyExample.new(hello: "World")
|
167
167
|
client._clean!
|
168
168
|
expect(client).to_not be_dirty
|
169
169
|
|
@@ -172,7 +172,7 @@ describe Flexirest::Base do
|
|
172
172
|
end
|
173
173
|
|
174
174
|
it 'should respond_to? attributes defined in the response' do
|
175
|
-
client = EmptyExample.new(:
|
175
|
+
client = EmptyExample.new(hello: "World")
|
176
176
|
expect(client.respond_to?(:hello)).to be_truthy
|
177
177
|
expect(client.respond_to?(:world)).to be_falsey
|
178
178
|
end
|
@@ -311,6 +311,13 @@ describe Flexirest::Base do
|
|
311
311
|
EmptyExample._request("http://api.example.com/")
|
312
312
|
end
|
313
313
|
|
314
|
+
it "passes headers" do
|
315
|
+
stub_request(:get, "http://api.example.com/v1").
|
316
|
+
with(headers: {'Accept'=>'application/hal+json, application/json;q=0.5', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Connection'=>'Keep-Alive', 'X-Something'=>'foo/bar', 'User-Agent'=>'Flexirest/1.5.2'}).
|
317
|
+
to_return(status: 200, body: "", headers: {})
|
318
|
+
EmptyExample._request("http://api.example.com/v1", :get, {}, {"X-Something": "foo/bar"})
|
319
|
+
end
|
320
|
+
|
314
321
|
it "runs callbacks as usual" do
|
315
322
|
expect_any_instance_of(Flexirest::Request).to receive(:do_request).with(any_args).and_return(::FaradayResponseMock.new(OpenStruct.new(status:200, response_headers:{}, body:"{\"first_name\":\"Billy\"}")))
|
316
323
|
expect(EmptyExample).to receive(:_callback_request).with(any_args).exactly(2).times
|
@@ -418,7 +425,7 @@ describe Flexirest::Base do
|
|
418
425
|
|
419
426
|
it "should be able to use mapped methods to create a request to pass in to _lazy_request" do
|
420
427
|
expect_any_instance_of(Flexirest::Connection).to receive(:get).with('/find/1', anything).and_return(::FaradayResponseMock.new(OpenStruct.new(status:200, response_headers:{}, body:"{\"first_name\":\"Billy\"}")))
|
421
|
-
request = AlteringClientExample._request_for(:find, :
|
428
|
+
request = AlteringClientExample._request_for(:find, id: 1)
|
422
429
|
example = AlteringClientExample._lazy_request(request)
|
423
430
|
expect(example.first_name).to eq("Billy")
|
424
431
|
end
|
data/spec/lib/request_spec.rb
CHANGED
@@ -361,6 +361,16 @@ describe Flexirest::Request do
|
|
361
361
|
expect(ExampleClient.all).to be_truthy
|
362
362
|
end
|
363
363
|
|
364
|
+
it "should return true from 202 with empty bodies" do
|
365
|
+
expect_any_instance_of(Flexirest::Connection).to receive(:get).with(any_args).and_return(::FaradayResponseMock.new(OpenStruct.new(status:202, response_headers:{}, body: nil)))
|
366
|
+
expect(ExampleClient.all).to be_truthy
|
367
|
+
end
|
368
|
+
|
369
|
+
it "should return true from 200 with empty bodies" do
|
370
|
+
expect_any_instance_of(Flexirest::Connection).to receive(:get).with(any_args).and_return(::FaradayResponseMock.new(OpenStruct.new(status:200, response_headers:{}, body: nil)))
|
371
|
+
expect(ExampleClient.all).to be_truthy
|
372
|
+
end
|
373
|
+
|
364
374
|
it "should return a lazy loader object if lazy loading is enabled" do
|
365
375
|
object = LazyLoadedExampleClient.fake id:1234, debug:true
|
366
376
|
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.5.
|
4
|
+
version: 1.5.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: 2017-
|
11
|
+
date: 2017-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|