restful_resource 0.8.9 → 0.8.10
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36cc91bc3981c424860da9b4d0796b4a6ecd39fa
|
4
|
+
data.tar.gz: 36335e18b3355ef43378f4bf40063e13cef20d49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f4140e5cdec22eacdbea78d34d92547929c4b261f41ee2c34de587f235cbf55a4957b1d4d93c9437bda5289f25b9f856d4fdff5d362bcea3bf0dace9de2f901
|
7
|
+
data.tar.gz: 79c6dd84751fb90dabecfa78218e12b879e6a1a7b99dfc207f674cc2663626c2a75c8a3219e8163886d3fb7c4b8abfc5364cf7a008fbe0194b45b2867d082b2e
|
@@ -2,20 +2,16 @@ module RestfulResource
|
|
2
2
|
class Base < OpenObject
|
3
3
|
extend RestfulResource::Associations
|
4
4
|
|
5
|
-
def self.
|
6
|
-
@
|
7
|
-
end
|
5
|
+
def self.configure(base_url: nil, username: nil, password: nil)
|
6
|
+
@base_url = URI.parse(base_url)
|
8
7
|
|
9
|
-
|
10
|
-
@http ||= RestfulResource::HttpClient.new(authorization: superclass.base_authorization)
|
11
|
-
end
|
8
|
+
auth = nil
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
if (username.present? && password.present?)
|
11
|
+
auth = RestfulResource::Authorization.http_authorization(username, password)
|
12
|
+
end
|
16
13
|
|
17
|
-
|
18
|
-
@base_url = URI.parse(url)
|
14
|
+
@http = RestfulResource::HttpClient.new(authorization: auth)
|
19
15
|
end
|
20
16
|
|
21
17
|
def self.resource_path(url)
|
@@ -23,24 +19,24 @@ module RestfulResource
|
|
23
19
|
end
|
24
20
|
|
25
21
|
def self.find(id, params={})
|
26
|
-
response =
|
22
|
+
response = http.get(member_url(id, params))
|
27
23
|
self.new(parse_json(response.body))
|
28
24
|
end
|
29
25
|
|
30
26
|
def self.where(params={})
|
31
|
-
response =
|
27
|
+
response = http.get(collection_url(params))
|
32
28
|
self.paginate_response(response)
|
33
29
|
end
|
34
30
|
|
35
31
|
def self.get(params={})
|
36
|
-
response =
|
32
|
+
response = http.get(collection_url(params))
|
37
33
|
RestfulResource::OpenObject.new(parse_json(response.body))
|
38
34
|
end
|
39
35
|
|
40
36
|
def self.put(id, data: {}, **params)
|
41
37
|
url = member_url(id, params)
|
42
38
|
|
43
|
-
response =
|
39
|
+
response = http.put(url, data: data)
|
44
40
|
self.new(parse_json(response.body))
|
45
41
|
end
|
46
42
|
|
@@ -63,14 +59,17 @@ module RestfulResource
|
|
63
59
|
end
|
64
60
|
|
65
61
|
protected
|
66
|
-
def self.
|
67
|
-
|
68
|
-
|
69
|
-
@base_url
|
62
|
+
def self.http
|
63
|
+
@http || superclass.http
|
70
64
|
end
|
71
65
|
|
72
|
-
def self.
|
73
|
-
@
|
66
|
+
def self.base_url
|
67
|
+
result = @base_url
|
68
|
+
if result.nil? && superclass.respond_to?(:base_url)
|
69
|
+
result = superclass.base_url
|
70
|
+
end
|
71
|
+
raise "Base url missing" if result.nil?
|
72
|
+
result
|
74
73
|
end
|
75
74
|
|
76
75
|
private
|
@@ -79,12 +78,12 @@ module RestfulResource
|
|
79
78
|
end
|
80
79
|
|
81
80
|
def self.member_url(id, params)
|
82
|
-
url = merge_url_paths(
|
81
|
+
url = merge_url_paths(base_url, @resource_path, id, @action_prefix)
|
83
82
|
replace_parameters(url, params)
|
84
83
|
end
|
85
84
|
|
86
85
|
def self.collection_url(params)
|
87
|
-
url = merge_url_paths(
|
86
|
+
url = merge_url_paths(base_url, @resource_path, @action_prefix)
|
88
87
|
replace_parameters(url, params)
|
89
88
|
end
|
90
89
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require_relative '../spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe RestfulResource::Base, 'authorization' do
|
4
4
|
before :each do
|
5
5
|
class FirstClient < RestfulResource::Base
|
6
6
|
end
|
@@ -8,6 +8,8 @@ describe "http client" do
|
|
8
8
|
class SecondClient < RestfulResource::Base
|
9
9
|
end
|
10
10
|
|
11
|
+
class NotConfiguredClient < RestfulResource::Base; end
|
12
|
+
|
11
13
|
class FirstTest < FirstClient
|
12
14
|
resource_path 'test'
|
13
15
|
end
|
@@ -16,31 +18,39 @@ describe "http client" do
|
|
16
18
|
resource_path 'test'
|
17
19
|
end
|
18
20
|
|
19
|
-
FirstClient.http
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
SecondClient.http_authorization('test_user', 'test_pass')
|
21
|
+
FirstClient.configure(base_url: 'http://api.carwow.co.uk/api/first')
|
22
|
+
SecondClient.configure(base_url: 'http://api.carwow.co.uk/api/second',
|
23
|
+
username: 'test_user',
|
24
|
+
password: 'test_pass')
|
24
25
|
end
|
25
26
|
|
26
27
|
it "should use two different http instances" do
|
27
|
-
expect(FirstTest.http).not_to equal(SecondTest.http)
|
28
|
+
expect(FirstTest.send(:http)).not_to equal(SecondTest.send(:http))
|
28
29
|
end
|
29
30
|
|
30
31
|
it 'should have http auth on SecondClient when initialised first' do
|
31
|
-
SecondTest.http
|
32
|
-
FirstTest.http
|
32
|
+
SecondTest.send(:http)
|
33
|
+
FirstTest.send(:http)
|
33
34
|
|
34
|
-
authorization = SecondTest.http.instance_variable_get :@authorization
|
35
|
+
authorization = SecondTest.send(:http).instance_variable_get :@authorization
|
35
36
|
expect(authorization).to be_truthy
|
36
37
|
end
|
37
38
|
|
38
39
|
it 'should have http auth on SecondTest when initialised second' do
|
39
|
-
FirstTest.http
|
40
|
-
SecondTest.http
|
40
|
+
FirstTest.send(:http)
|
41
|
+
SecondTest.send(:http)
|
41
42
|
|
42
|
-
authorization = SecondTest.http.instance_variable_get :@authorization
|
43
|
+
authorization = SecondTest.send(:http).instance_variable_get :@authorization
|
43
44
|
expect(authorization).to be_truthy
|
44
45
|
end
|
46
|
+
|
47
|
+
it 'should have same http auth on superclass' do
|
48
|
+
expect(SecondTest.send(:http)).to equal(SecondClient.send(:http))
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should raise exception if base_url is not set' do
|
52
|
+
expect { NotConfiguredClient.send(:base_url) }.to raise_error 'Base url missing'
|
53
|
+
end
|
54
|
+
|
45
55
|
end
|
46
56
|
|
@@ -3,8 +3,8 @@ require_relative '../spec_helper'
|
|
3
3
|
describe RestfulResource::Base do
|
4
4
|
before :each do
|
5
5
|
@mock_http = double("mock_http")
|
6
|
-
RestfulResource::Base.http
|
7
|
-
RestfulResource::Base.base_url
|
6
|
+
allow(RestfulResource::Base).to receive(:http).and_return(@mock_http)
|
7
|
+
RestfulResource::Base.configure(base_url: 'http://api.carwow.co.uk/')
|
8
8
|
end
|
9
9
|
|
10
10
|
it "should act as an openobject" do
|
@@ -77,11 +77,9 @@ describe RestfulResource::Base do
|
|
77
77
|
|
78
78
|
describe "#base_url" do
|
79
79
|
it "should be different for each subclass of Base" do
|
80
|
-
BaseA.base_url
|
81
|
-
BaseA.http = @mock_http
|
80
|
+
BaseA.configure(base_url: "http://a.carwow.co.uk")
|
82
81
|
|
83
|
-
BaseB.base_url
|
84
|
-
BaseB.http = @mock_http
|
82
|
+
BaseB.configure(base_url: "http://b.carwow.co.uk")
|
85
83
|
|
86
84
|
expect_get('http://a.carwow.co.uk/testa/1', RestfulResource::Response.new())
|
87
85
|
expect_get('http://b.carwow.co.uk/testb/2', RestfulResource::Response.new())
|
@@ -3,8 +3,8 @@ require_relative '../spec_helper'
|
|
3
3
|
describe RestfulResource::RailsValidations do
|
4
4
|
before :each do
|
5
5
|
@mock_http = double("mock_http")
|
6
|
-
RestfulResource::Base.http
|
7
|
-
RestfulResource::Base.
|
6
|
+
RestfulResource::Base.configure(base_url: "http://api.carwow.co.uk/")
|
7
|
+
allow(RestfulResource::Base).to receive(:http).and_return(@mock_http)
|
8
8
|
end
|
9
9
|
|
10
10
|
context "#put without errors" do
|