lhc 3.1.1 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +20 -10
- data/cider-ci.yml +3 -0
- data/cider-ci/contexts/rspec.yml +19 -0
- data/cider-ci/jobs/tests.yml +27 -0
- data/docs/configuration.md +3 -3
- data/lib/lhc.rb +1 -0
- data/lib/lhc/concerns/lhc/formats.rb +13 -0
- data/lib/lhc/formats/json.rb +10 -0
- data/lib/lhc/response.rb +12 -1
- data/lib/lhc/version.rb +1 -1
- data/spec/basic_methods/delete_spec.rb +4 -4
- data/spec/basic_methods/get_spec.rb +18 -5
- data/spec/basic_methods/post_spec.rb +5 -5
- data/spec/basic_methods/put_spec.rb +5 -5
- data/spec/basic_methods/request_spec.rb +2 -2
- data/spec/config/endpoints_spec.rb +8 -8
- data/spec/config/placeholders_spec.rb +8 -8
- data/spec/endpoint/compile_spec.rb +4 -4
- data/spec/endpoint/remove_interpolated_params_spec.rb +2 -2
- data/spec/endpoint/values_as_params_spec.rb +6 -6
- data/spec/request/option_dup_spec.rb +2 -2
- data/spec/request/url_patterns_spec.rb +4 -4
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43a289b03b874bf4db882437401c6f5f7ce76111
|
4
|
+
data.tar.gz: aa18dab5fe11eff93eada4ad91267a54357afb14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6677681346af6436d59ed7201a7666e049aebb4ec35a8145a7c4afbb98ba37960544e982536d57e4d17a325236fcf2f217fe075fb5a1dd7f3ceeac35338f8d9
|
7
|
+
data.tar.gz: 08c21acba94b0f42aff47ae3168e02a9cb884f552c4b195e024c77d75fe20a02429355a92da14ef1e9c37d22cd239a7d50a612f96534bbae8f56cc6412650f35
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@ See [LHS](https://github.com/local-ch/LHS), if you are searching for something m
|
|
8
8
|
## Quick Start Guide
|
9
9
|
|
10
10
|
```ruby
|
11
|
-
response = LHC.get('http://datastore
|
11
|
+
response = LHC.get('http://datastore/v2/feedbacks')
|
12
12
|
response.data.items[0]
|
13
13
|
response.data.items[0].recommended
|
14
14
|
response.body # String
|
@@ -21,13 +21,23 @@ Available are `get`, `post`, `put` & `delete`.
|
|
21
21
|
|
22
22
|
Other methods are available using `LHC.request(options)`.
|
23
23
|
|
24
|
+
## Formats: like json etc.
|
25
|
+
|
26
|
+
You can use any of the basic methods in combination with a format like `json`:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
LHC.json.get(options)
|
30
|
+
```
|
31
|
+
|
32
|
+
Currently supported formats: `json`
|
33
|
+
|
24
34
|
## A request from scratch
|
25
35
|
|
26
36
|
```ruby
|
27
37
|
response = LHC.request(url: 'http://local.ch', method: :options)
|
28
38
|
response.headers
|
29
39
|
|
30
|
-
response = LHC.request(url: 'http://datastore
|
40
|
+
response = LHC.request(url: 'http://datastore/v2/feedbacks', method: :get)
|
31
41
|
response.data
|
32
42
|
```
|
33
43
|
|
@@ -42,8 +52,8 @@ You will get back an array of LHC::Response objects.
|
|
42
52
|
|
43
53
|
```ruby
|
44
54
|
options = []
|
45
|
-
options << { url: 'http://datastore
|
46
|
-
options << { url: 'http://datastore
|
55
|
+
options << { url: 'http://datastore/v2/feedbacks' }
|
56
|
+
options << { url: 'http://datastore/v2/content-ads/123/feedbacks' }
|
47
57
|
responses = LHC.request(options)
|
48
58
|
```
|
49
59
|
|
@@ -53,7 +63,7 @@ Data that is transfered using the HTTP request body is transfered as you provide
|
|
53
63
|
Also consider setting the http header for content-type.
|
54
64
|
|
55
65
|
```ruby
|
56
|
-
LHC.post('http://datastore
|
66
|
+
LHC.post('http://datastore/v2/feedbacks',
|
57
67
|
body: feedback.to_json,
|
58
68
|
headers: { 'Content-Type' => 'application/json' }
|
59
69
|
)
|
@@ -65,7 +75,7 @@ You can configure global endpoints, placeholders and interceptors.
|
|
65
75
|
|
66
76
|
```ruby
|
67
77
|
LHC.configure do |c|
|
68
|
-
c.placeholder :datastore, 'http://datastore
|
78
|
+
c.placeholder :datastore, 'http://datastore/v2'
|
69
79
|
c.endpoint :feedbacks, ':datastore/feedbacks', params: { has_reviews: true }
|
70
80
|
c.interceptors = [CacheInterceptor]
|
71
81
|
end
|
@@ -79,17 +89,17 @@ Instead of using concrete urls you can also use url-templates that contain place
|
|
79
89
|
This is especially handy for configuring an endpoint once and generate the url from the params when doing the request.
|
80
90
|
|
81
91
|
```ruby
|
82
|
-
url = 'http://datastore
|
92
|
+
url = 'http://datastore/v2/feedbacks/:id'
|
83
93
|
LHC.config.endpoint(:find_feedback, url, options)
|
84
94
|
LHC.get(:find_feedback, params:{ id: 123 })
|
85
|
-
# GET http://datastore
|
95
|
+
# GET http://datastore/v2/feedbacks/123
|
86
96
|
```
|
87
97
|
|
88
98
|
This also works in place without configuring an endpoint.
|
89
99
|
|
90
100
|
```ruby
|
91
|
-
LHC.get('http://datastore
|
92
|
-
# GET http://datastore
|
101
|
+
LHC.get('http://datastore/v2/feedbacks/:id', params:{ id: 123 })
|
102
|
+
# GET http://datastore/v2/feedbacks/123
|
93
103
|
```
|
94
104
|
|
95
105
|
If you miss to provide a parameter that is part of the url-template, it will raise an exception.
|
data/cider-ci.yml
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
subcontexts:
|
2
|
+
|
3
|
+
- name: 'All rspec tests'
|
4
|
+
|
5
|
+
task-defaults:
|
6
|
+
|
7
|
+
environment-variables:
|
8
|
+
RAILS_ENV: test
|
9
|
+
|
10
|
+
scripts:
|
11
|
+
|
12
|
+
test:
|
13
|
+
|
14
|
+
body: |
|
15
|
+
#!/usr/bin/env bash
|
16
|
+
bundle exec rspec $CIDER_CI_TASK_FILE
|
17
|
+
|
18
|
+
_cider-ci_generate-tasks:
|
19
|
+
include-match: spec/.*_spec.rb
|
@@ -0,0 +1,27 @@
|
|
1
|
+
tests:
|
2
|
+
|
3
|
+
name: 'Tests'
|
4
|
+
|
5
|
+
run-on:
|
6
|
+
- type: branch
|
7
|
+
include-match: ^.*$
|
8
|
+
|
9
|
+
context:
|
10
|
+
|
11
|
+
_cider-ci_include:
|
12
|
+
- cider-ci/contexts/rspec.yml
|
13
|
+
|
14
|
+
task-defaults:
|
15
|
+
|
16
|
+
scripts:
|
17
|
+
|
18
|
+
bundle:
|
19
|
+
body: sed 's/^source.*/source "http\:\/\/52.29.7.59:9292"/g' Gemfile > Gemfile.tmp ; mv Gemfile.tmp Gemfile && bundle install
|
20
|
+
|
21
|
+
ruby-version:
|
22
|
+
body: ruby --version
|
23
|
+
|
24
|
+
test:
|
25
|
+
start-when:
|
26
|
+
- script: bundle
|
27
|
+
- script: ruby-version
|
data/docs/configuration.md
CHANGED
@@ -10,7 +10,7 @@ Take care that you only use `LHC.configure` once, because it is actually resetin
|
|
10
10
|
```ruby
|
11
11
|
|
12
12
|
LHC.configure do |c|
|
13
|
-
c.placeholder :datastore, 'http://datastore
|
13
|
+
c.placeholder :datastore, 'http://datastore/v2'
|
14
14
|
c.endpoint :feedbacks, ':datastore/feedbacks'
|
15
15
|
c.interceptors = [CachingInterceptor, MonitorInterceptor, TrackingIdInterceptor]
|
16
16
|
end
|
@@ -22,7 +22,7 @@ Take care that you only use `LHC.configure` once, because it is actually resetin
|
|
22
22
|
You can configure endpoints, for later use, by giving them a name, an url and some parameters (optional).
|
23
23
|
|
24
24
|
```ruby
|
25
|
-
url = 'http://datastore
|
25
|
+
url = 'http://datastore/v2/feedbacks'
|
26
26
|
options = { params: { has_reviews: true } }
|
27
27
|
LHC.config.endpoint(:feedbacks, url, options)
|
28
28
|
LHC.get(:feedbacks)
|
@@ -39,7 +39,7 @@ Explicit request options override configured options.
|
|
39
39
|
You can configure global placeholders, that are used when generating urls from url-templates.
|
40
40
|
|
41
41
|
```ruby
|
42
|
-
LHC.config.placeholder(:datastore, 'http://datastore
|
42
|
+
LHC.config.placeholder(:datastore, 'http://datastore/v2')
|
43
43
|
options = { params: { has_reviews: true } }
|
44
44
|
LHC.config.endpoint(:feedbacks, url, options)
|
45
45
|
LHC.get(:feedbacks)
|
data/lib/lhc.rb
CHANGED
data/lib/lhc/response.rb
CHANGED
@@ -16,7 +16,12 @@ class LHC::Response
|
|
16
16
|
# Access response data.
|
17
17
|
# Cache parsing.
|
18
18
|
def data
|
19
|
-
@data ||=
|
19
|
+
@data ||= case format
|
20
|
+
when :json
|
21
|
+
JSON.parse(raw.body, object_class: OpenStruct)
|
22
|
+
else # default is json
|
23
|
+
JSON.parse(raw.body, object_class: OpenStruct)
|
24
|
+
end
|
20
25
|
@data
|
21
26
|
end
|
22
27
|
|
@@ -53,4 +58,10 @@ class LHC::Response
|
|
53
58
|
|
54
59
|
attr_accessor :raw
|
55
60
|
|
61
|
+
def format
|
62
|
+
headers = {}
|
63
|
+
headers = request.options.fetch(:headers, {}) if request && request.options
|
64
|
+
return :json if headers['Content-Type'] == 'application/json'
|
65
|
+
end
|
66
|
+
|
56
67
|
end
|
data/lib/lhc/version.rb
CHANGED
@@ -13,21 +13,21 @@ describe LHC do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
before(:each) do
|
16
|
-
stub_request(:delete, "http://datastore
|
16
|
+
stub_request(:delete, "http://datastore/v2/feedbacks/12121")
|
17
17
|
.to_return(status: 200, body: feedback.to_json, headers: {'Content-Encoding' => 'UTF-8'})
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'does a delete request when providing a complete url' do
|
21
|
-
LHC.delete('http://datastore
|
21
|
+
LHC.delete('http://datastore/v2/feedbacks/12121')
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'it makes response data available in a rails way' do
|
25
|
-
response = LHC.delete('http://datastore
|
25
|
+
response = LHC.delete('http://datastore/v2/feedbacks/12121')
|
26
26
|
expect(response.data.recommended).to eq true
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'provides response headers' do
|
30
|
-
response = LHC.delete('http://datastore
|
30
|
+
response = LHC.delete('http://datastore/v2/feedbacks/12121')
|
31
31
|
expect(response.headers).to be
|
32
32
|
end
|
33
33
|
end
|
@@ -5,7 +5,7 @@ describe LHC do
|
|
5
5
|
context 'get' do
|
6
6
|
|
7
7
|
before(:each) do
|
8
|
-
stub_request(:get, 'http://datastore
|
8
|
+
stub_request(:get, 'http://datastore/v2/feedbacks?has_reviews=true')
|
9
9
|
.to_return(status: 200, body: { total: 99 }.to_json, headers: {'Content-Encoding' => 'UTF-8'})
|
10
10
|
end
|
11
11
|
|
@@ -14,24 +14,37 @@ describe LHC do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'does a get request when providing a complete url' do
|
17
|
-
LHC.get('http://datastore
|
17
|
+
LHC.get('http://datastore/v2/feedbacks', params: parameters)
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'does a get request when providing the name of a configured endpoint' do
|
21
21
|
url = 'http://:datastore/v2/feedbacks'
|
22
|
-
options = { params: { datastore: 'datastore
|
22
|
+
options = { params: { datastore: 'datastore' } }
|
23
23
|
LHC.configure { |c| c.endpoint(:feedbacks, url, options) }
|
24
24
|
LHC.get(:feedbacks, params: parameters)
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'it makes response data available in a rails way' do
|
28
|
-
response = LHC.get('http://datastore
|
28
|
+
response = LHC.get('http://datastore/v2/feedbacks', params: parameters)
|
29
29
|
expect(response.data.total).to eq 99
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'provides response headers' do
|
33
|
-
response = LHC.get('http://datastore
|
33
|
+
response = LHC.get('http://datastore/v2/feedbacks', params: parameters)
|
34
34
|
expect(response.headers).to be
|
35
35
|
end
|
36
36
|
end
|
37
|
+
|
38
|
+
context 'get json' do
|
39
|
+
|
40
|
+
before(:each) do
|
41
|
+
stub_request(:get, 'http://datastore/v2/feedbacks').with(headers: {'Content-Type' => 'application/json'})
|
42
|
+
.to_return(body: {some: 'json'}.to_json)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'requests json and parses response body' do
|
46
|
+
data = LHC.json.get('http://datastore/v2/feedbacks').data
|
47
|
+
expect(data.some).to eq 'json'
|
48
|
+
end
|
49
|
+
end
|
37
50
|
end
|
@@ -13,29 +13,29 @@ describe LHC do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
before(:each) do
|
16
|
-
stub_request(:post, "http://datastore
|
16
|
+
stub_request(:post, "http://datastore/v2/feedbacks")
|
17
17
|
.with(body: feedback.to_json)
|
18
18
|
.to_return(status: 200, body: feedback.to_json, headers: {'Content-Encoding' => 'UTF-8'})
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'does a post request when providing a complete url' do
|
22
|
-
LHC.post('http://datastore
|
22
|
+
LHC.post('http://datastore/v2/feedbacks', body: feedback.to_json)
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'does a post request when providing the name of a configured endpoint' do
|
26
26
|
url = 'http://:datastore/v2/feedbacks'
|
27
|
-
options = { params: { datastore: 'datastore
|
27
|
+
options = { params: { datastore: 'datastore' } }
|
28
28
|
LHC.configure { |c| c.endpoint(:feedbacks, url, options) }
|
29
29
|
LHC.post(:feedbacks, body: feedback.to_json)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'it makes response data available in a rails way' do
|
33
|
-
response = LHC.post('http://datastore
|
33
|
+
response = LHC.post('http://datastore/v2/feedbacks', body: feedback.to_json)
|
34
34
|
expect(response.data.source_id).to eq 'aaa'
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'provides response headers' do
|
38
|
-
response = LHC.post('http://datastore
|
38
|
+
response = LHC.post('http://datastore/v2/feedbacks', body: feedback.to_json)
|
39
39
|
expect(response.headers).to be
|
40
40
|
end
|
41
41
|
end
|
@@ -19,29 +19,29 @@ describe LHC do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
before(:each) do
|
22
|
-
stub_request(:put, "http://datastore
|
22
|
+
stub_request(:put, "http://datastore/v2/feedbacks")
|
23
23
|
.with(body: change.to_json)
|
24
24
|
.to_return(status: 200, body: feedback.merge(change).to_json, headers: {'Content-Encoding' => 'UTF-8'})
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'does a post request when providing a complete url' do
|
28
|
-
LHC.put('http://datastore
|
28
|
+
LHC.put('http://datastore/v2/feedbacks', body: change.to_json)
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'does a post request when providing the name of a configured endpoint' do
|
32
32
|
url = 'http://:datastore/v2/feedbacks'
|
33
|
-
options = { params: { datastore: 'datastore
|
33
|
+
options = { params: { datastore: 'datastore' } }
|
34
34
|
LHC.configure { |c| c.endpoint(:feedbacks, url, options) }
|
35
35
|
LHC.put(:feedbacks, body: change.to_json)
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'it makes response data available in a rails way' do
|
39
|
-
response = LHC.put('http://datastore
|
39
|
+
response = LHC.put('http://datastore/v2/feedbacks', body: change.to_json)
|
40
40
|
expect(response.data.recommended).to eq false
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'provides response headers' do
|
44
|
-
response = LHC.put('http://datastore
|
44
|
+
response = LHC.put('http://datastore/v2/feedbacks', body: change.to_json)
|
45
45
|
expect(response.headers).to be
|
46
46
|
end
|
47
47
|
end
|
@@ -7,12 +7,12 @@ describe LHC do
|
|
7
7
|
let(:total) { 99 }
|
8
8
|
|
9
9
|
before(:each) do
|
10
|
-
stub_request(:get, "http://datastore
|
10
|
+
stub_request(:get, "http://datastore/v2/feedbacks?has_reviews=true")
|
11
11
|
.to_return(status: 200, body: { total: total }.to_json, headers: {'Content-Encoding' => 'UTF-8'})
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'does a request returning a response' do
|
15
|
-
response = LHC.request(url: 'http://datastore
|
15
|
+
response = LHC.request(url: 'http://datastore/v2/feedbacks', params: { has_reviews: true }, method: :get)
|
16
16
|
expect(response.data.total).to eq total
|
17
17
|
end
|
18
18
|
end
|
@@ -4,7 +4,7 @@ describe LHC do
|
|
4
4
|
|
5
5
|
context 'configured endpoints' do
|
6
6
|
|
7
|
-
let(:url) { 'http://analytics
|
7
|
+
let(:url) { 'http://analytics/track/:entity_id/w/:type' }
|
8
8
|
|
9
9
|
let(:options) do
|
10
10
|
{
|
@@ -25,33 +25,33 @@ describe LHC do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'compile url' do
|
28
|
-
stub_request(:get, 'http://analytics
|
28
|
+
stub_request(:get, 'http://analytics/track/123/w/request?env=PROD')
|
29
29
|
response = LHC.get(:kpi_tracker, params: { entity_id: 123, type: 'request' })
|
30
30
|
expect(response.request.options[:followlocation]).to eq false
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'gets overwritten by explicit request options' do
|
34
|
-
stub_request(:get, 'http://analytics
|
34
|
+
stub_request(:get, 'http://analytics/track/123/w/request?env=STG')
|
35
35
|
response = LHC.get(:kpi_tracker, params: { entity_id: 123, type: 'request', env: 'STG' })
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'raises in case of claching endpoint names' do
|
39
39
|
expect(->{
|
40
|
-
LHC.config.endpoint(:kpi_tracker, 'http://kpi-tracker
|
40
|
+
LHC.config.endpoint(:kpi_tracker, 'http://kpi-tracker')
|
41
41
|
}).to raise_error 'Endpoint already exists for that name'
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'enforces endpoint name to be a symbol' do
|
45
|
-
LHC.configure { |c| c.endpoint('datastore', 'http://datastore
|
46
|
-
expect(LHC.config.endpoints[:datastore].url).to eq 'http://datastore
|
45
|
+
LHC.configure { |c| c.endpoint('datastore', 'http://datastore') }
|
46
|
+
expect(LHC.config.endpoints[:datastore].url).to eq 'http://datastore'
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
context 'configured enpoints with default params' do
|
51
51
|
|
52
52
|
before(:each) do
|
53
|
-
LHC.config.endpoint(:telemarketers, 'http://datastore
|
54
|
-
stub_request(:get, 'http://datastore
|
53
|
+
LHC.config.endpoint(:telemarketers, 'http://datastore/v2/spamnumbers?order_by=-user_frequency&swiss_number=true&offset=0&limit=:limit', params: { limit: 200 })
|
54
|
+
stub_request(:get, 'http://datastore/v2/spamnumbers?limit=200&offset=0&order_by=-user_frequency&swiss_number=true')
|
55
55
|
.to_return(status: 200)
|
56
56
|
end
|
57
57
|
|
@@ -5,28 +5,28 @@ describe LHC do
|
|
5
5
|
context 'configuration of placeholders' do
|
6
6
|
|
7
7
|
it 'uses values for placeholders defined globally' do
|
8
|
-
LHC.configure { |c| c.placeholder(:datastore, 'http://datastore
|
9
|
-
stub_request(:get, "http://datastore
|
8
|
+
LHC.configure { |c| c.placeholder(:datastore, 'http://datastore/v2') }
|
9
|
+
stub_request(:get, "http://datastore/v2/feedbacks")
|
10
10
|
LHC.get(':datastore/feedbacks')
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'uses explicit values first' do
|
14
14
|
LHC.configure {|c| c.placeholder(:campaign_id, '123') }
|
15
|
-
stub_request(:get, 'http://datastore
|
16
|
-
url = 'http://datastore
|
15
|
+
stub_request(:get, 'http://datastore/v2/campaign/456/feedbacks')
|
16
|
+
url = 'http://datastore/v2/campaign/:campaign_id/feedbacks'
|
17
17
|
LHC.get(url, params: { campaign_id: '456' })
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'raises in case of claching placeholder name' do
|
21
|
-
LHC.configure { |c| c.placeholder(:datastore, 'http://datastore
|
21
|
+
LHC.configure { |c| c.placeholder(:datastore, 'http://datastore') }
|
22
22
|
expect(->{
|
23
|
-
LHC.config.placeholder(:datastore, 'http://datastore
|
23
|
+
LHC.config.placeholder(:datastore, 'http://datastore')
|
24
24
|
}).to raise_error 'Placeholder already exists for that name'
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'enforces placeholder name to be a symbol' do
|
28
|
-
LHC.configure { |c| c.placeholder('datatore', 'http://datastore
|
29
|
-
expect(LHC.config.placeholders[:datatore]).to eq 'http://datastore
|
28
|
+
LHC.configure { |c| c.placeholder('datatore', 'http://datastore') }
|
29
|
+
expect(LHC.config.placeholders[:datatore]).to eq 'http://datastore'
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -7,19 +7,19 @@ describe LHC::Endpoint do
|
|
7
7
|
it 'uses parameters for interpolation' do
|
8
8
|
endpoint = LHC::Endpoint.new(':datastore/v2/:campaign_id/feedbacks')
|
9
9
|
expect(
|
10
|
-
endpoint.compile(datastore: 'http://datastore
|
11
|
-
).to eq "http://datastore
|
10
|
+
endpoint.compile(datastore: 'http://datastore', campaign_id: 'abc')
|
11
|
+
).to eq "http://datastore/v2/abc/feedbacks"
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'uses provided proc to find values' do
|
15
15
|
endpoint = LHC::Endpoint.new(':datastore/v2')
|
16
|
-
config = { datastore: 'http://datastore
|
16
|
+
config = { datastore: 'http://datastore' }
|
17
17
|
find_value = ->(match){
|
18
18
|
config[match.gsub(':', '').to_sym]
|
19
19
|
}
|
20
20
|
expect(
|
21
21
|
endpoint.compile(find_value)
|
22
|
-
).to eq "http://datastore
|
22
|
+
).to eq "http://datastore/v2"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -4,13 +4,13 @@ describe LHC::Endpoint do
|
|
4
4
|
|
5
5
|
it 'removes params used for interpolation' do
|
6
6
|
params = {
|
7
|
-
datastore: 'http://datastore
|
7
|
+
datastore: 'http://datastore',
|
8
8
|
campaign_id: 'abc',
|
9
9
|
has_reviews: true
|
10
10
|
}
|
11
11
|
endpoint = LHC::Endpoint.new(':datastore/v2/:campaign_id/feedbacks')
|
12
12
|
removed = endpoint.remove_interpolated_params!(params)
|
13
13
|
expect(params).to eq ({ has_reviews: true })
|
14
|
-
expect(removed).to eq(datastore: 'http://datastore
|
14
|
+
expect(removed).to eq(datastore: 'http://datastore', campaign_id: 'abc')
|
15
15
|
end
|
16
16
|
end
|
@@ -6,15 +6,15 @@ describe LHC::Endpoint do
|
|
6
6
|
|
7
7
|
it 'provides params extracting values from a provided url and template' do
|
8
8
|
[
|
9
|
-
[':datastore/v2/places', 'http://
|
10
|
-
datastore: 'http://
|
9
|
+
[':datastore/v2/places', 'http://local.ch:8082/v2/places', {
|
10
|
+
datastore: 'http://local.ch:8082'
|
11
11
|
}],
|
12
|
-
[':datastore/v2/places/:id', 'http://
|
13
|
-
datastore: 'http://
|
12
|
+
[':datastore/v2/places/:id', 'http://local.ch:8082/v2/places/ZW9OJyrbt4OZE9ueu80w-A', {
|
13
|
+
datastore: 'http://local.ch:8082',
|
14
14
|
id: 'ZW9OJyrbt4OZE9ueu80w-A'
|
15
15
|
}],
|
16
|
-
[':datastore/v2/places/:namespace/:id', 'http://
|
17
|
-
datastore: 'http://
|
16
|
+
[':datastore/v2/places/:namespace/:id', 'http://local.ch:8082/v2/places/switzerland/ZW9OJyrbt', {
|
17
|
+
datastore: 'http://local.ch:8082',
|
18
18
|
namespace: 'switzerland',
|
19
19
|
id: 'ZW9OJyrbt'
|
20
20
|
}],
|
@@ -3,9 +3,9 @@ require 'rails_helper'
|
|
3
3
|
describe LHC::Request do
|
4
4
|
|
5
5
|
it 'does not alter the options that where passed' do
|
6
|
-
LHC.configure { |c| c.endpoint(:kpi_tracker, 'http://analytics
|
6
|
+
LHC.configure { |c| c.endpoint(:kpi_tracker, 'http://analytics/track/:entity_id/w', { params: { env: 'PROD' } }) }
|
7
7
|
options = { params: { entity_id: '123' } }
|
8
|
-
stub_request(:get, "http://analytics
|
8
|
+
stub_request(:get, "http://analytics/track/123/w?env=PROD")
|
9
9
|
LHC.get(:kpi_tracker, options)
|
10
10
|
expect(options).to eq({ params: { entity_id: '123' } })
|
11
11
|
end
|
@@ -6,14 +6,14 @@ describe LHC::Request do
|
|
6
6
|
options = { params: {
|
7
7
|
has_reviews: true
|
8
8
|
}}
|
9
|
-
url = 'http://datastore
|
9
|
+
url = 'http://datastore/v2/campaign/:campaign_id/feedbacks'
|
10
10
|
LHC.configure { |c| c.endpoint(:feedbacks, url, options) }
|
11
|
-
stub_request(:get, 'http://datastore
|
11
|
+
stub_request(:get, 'http://datastore/v2/campaign/123/feedbacks?has_reviews=true')
|
12
12
|
LHC.get(:feedbacks, params:{campaign_id: 123})
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'compiles url when doing a request' do
|
16
|
-
stub_request(:get, 'http://datastore
|
17
|
-
LHC.get('http://datastore
|
16
|
+
stub_request(:get, 'http://datastore:8080/v2/feedbacks/123')
|
17
|
+
LHC.get('http://datastore:8080/v2/feedbacks/:id', params:{id: 123})
|
18
18
|
end
|
19
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lhc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- local.ch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|
@@ -119,6 +119,9 @@ files:
|
|
119
119
|
- Gemfile
|
120
120
|
- README.md
|
121
121
|
- Rakefile
|
122
|
+
- cider-ci.yml
|
123
|
+
- cider-ci/contexts/rspec.yml
|
124
|
+
- cider-ci/jobs/tests.yml
|
122
125
|
- docs/configuration.md
|
123
126
|
- docs/exceptions.md
|
124
127
|
- docs/interceptors.md
|
@@ -127,6 +130,7 @@ files:
|
|
127
130
|
- lhc.gemspec
|
128
131
|
- lib/lhc.rb
|
129
132
|
- lib/lhc/concerns/lhc/basic_methods.rb
|
133
|
+
- lib/lhc/concerns/lhc/formats.rb
|
130
134
|
- lib/lhc/config.rb
|
131
135
|
- lib/lhc/endpoint.rb
|
132
136
|
- lib/lhc/error.rb
|
@@ -134,6 +138,7 @@ files:
|
|
134
138
|
- lib/lhc/errors/server_error.rb
|
135
139
|
- lib/lhc/errors/timeout.rb
|
136
140
|
- lib/lhc/errors/unknown_error.rb
|
141
|
+
- lib/lhc/formats/json.rb
|
137
142
|
- lib/lhc/interceptor.rb
|
138
143
|
- lib/lhc/interceptor_processor.rb
|
139
144
|
- lib/lhc/request.rb
|