lhs 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ff25a42028f674f80afd08d6a152b42bf61b08b
4
- data.tar.gz: c123d197b870914fcb564ba2ce152293105c81c9
3
+ metadata.gz: 40403e2ae293ace8b6504d10b3f25ed4696b3fc4
4
+ data.tar.gz: 5cb53fbd0fb4742d5b4a0ddf70313b56f9c67de9
5
5
  SHA512:
6
- metadata.gz: 333cf3687bde474f71b5fcda3ffae1b375ce565fd9c7341888d5fd810d07ae51a137b1b34eb0b31b6d40f5e5d16b94e2330020327df605f3771f3a35224f2bbc
7
- data.tar.gz: b43d5f519fa79472617485bbfe21bdc757d97b38ba49b17d2e1d485562f5821e4968d66dd371a3ea5d81a67ae6d071d9610d3d0f14053ff37c378459596918bf
6
+ metadata.gz: 5ad6899b426c29d006b48f3fa7d3cada987a55a7311c8c7d7ab8a2dc38ebeb661b2f359d01a6b9c92dddfb438568cb35cbdce6bbef5aa537b9d7a4d8ce298b08
7
+ data.tar.gz: 3e540dccae57014ded112e0237a330ede9fcd4e91e9f702eef735edf3f9fde93d7fa1ddb735941b08af84f7cd80041db25e48262eea4fc8a6cc580c746dc1c95
data/docs/services.md CHANGED
@@ -18,7 +18,9 @@ You can also add request options for an endpoint (see following example).
18
18
  class Feedback < LHS::Service
19
19
 
20
20
  endpoint ':datastore/v2/content-ads/:campaign_id/feedbacks'
21
+ endpoint ':datastore/v2/content-ads/:campaign_id/feedbacks/:id'
21
22
  endpoint ':datastore/v2/feedbacks', cache: true, cache_expires_in: 1.day
23
+ endpoint ':datastore/v2/feedbacks/:id', cache: true, cache_expires_in: 1.day
22
24
 
23
25
  end
24
26
  ```
@@ -215,7 +217,7 @@ To influence how data is accessed/provied, you can use mapping to either map dee
215
217
  class LocalEntry < LHS::Service
216
218
  endpoint ':datastore/v2/local-entries'
217
219
 
218
- map :name, ->(entry){ entry.addresses.first.business.identities.first.name }
220
+ map :name, ->{ addresses.first.business.identities.first.name }
219
221
 
220
222
  end
221
223
  ```
@@ -57,7 +57,6 @@ class LHS::Service
57
57
  def compute_url!(params)
58
58
  endpoint = find_endpoint(params)
59
59
  url = endpoint.compile(params)
60
- url += "/#{params.delete(:id)}" if params && params[:id]
61
60
  endpoint.remove_interpolated_params!(params)
62
61
  url
63
62
  end
data/lib/lhs/data.rb CHANGED
@@ -39,7 +39,7 @@ class LHS::Data
39
39
  # or forward to proxy
40
40
  def method_missing(name, *args, &block)
41
41
  if root_item? && mapping = _root._service.instance.mapping[name]
42
- mapping.call(self)
42
+ self.instance_exec(&mapping)
43
43
  else
44
44
  _proxy.send(name, *args, &block)
45
45
  end
data/lib/lhs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "0.4.0"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -31,9 +31,11 @@ describe LHS::Collection do
31
31
  LHC.config.placeholder('datastore', datastore)
32
32
  class Feedback < LHS::Service
33
33
  endpoint ':datastore/feedbacks'
34
+ endpoint ':datastore/feedbacks/:id'
34
35
  end
35
36
  class User < LHS::Service
36
37
  endpoint ':datastore/users'
38
+ endpoint ':datastore/users/:id'
37
39
  end
38
40
  end
39
41
 
@@ -7,7 +7,7 @@ describe LHS::Collection do
7
7
  before(:each) do
8
8
  LHC.config.placeholder('datastore', datastore)
9
9
  class Account < LHS::Service
10
- endpoint ':datastore/accounts'
10
+ endpoint ':datastore/accounts/:id'
11
11
  end
12
12
  end
13
13
 
@@ -6,7 +6,7 @@ describe LHS::Service do
6
6
 
7
7
  before(:each) do
8
8
  class SomeService < LHS::Service
9
- endpoint 'backend/v2/feedbacks', cache_expires_in: 1.day, retry: 2, cache: true
9
+ endpoint 'backend/v2/feedbacks/:id', cache_expires_in: 1.day, retry: 2, cache: true
10
10
  end
11
11
  end
12
12
 
@@ -43,6 +43,21 @@ describe LHS::Service do
43
43
  ).to eq ':datastore/feedbacks'
44
44
  end
45
45
 
46
+ context 'compute url from endpoint' do
47
+
48
+ before(:each) do
49
+ class Feedback < LHS::Service
50
+ endpoint ':datastore/feedbacks'
51
+ endpoint ':datastore/feedbacks/:id'
52
+ end
53
+ end
54
+
55
+ it 'computes urls WITHOUT handling id separate' do
56
+ stub_request(:get, "#{datastore}/feedbacks/1").to_return(status: 200)
57
+ Feedback.find(1)
58
+ end
59
+ end
60
+
46
61
  context 'unsorted endpoints' do
47
62
 
48
63
  before(:each) do
@@ -7,7 +7,9 @@ describe LHS::Service do
7
7
  LHC.config.placeholder(:datastore, datastore)
8
8
  class SomeService < LHS::Service
9
9
  endpoint ':datastore/content-ads/:campaign_id/feedbacks'
10
+ endpoint ':datastore/content-ads/:campaign_id/feedbacks/:id'
10
11
  endpoint ':datastore/feedbacks'
12
+ endpoint ':datastore/feedbacks/:id'
11
13
  end
12
14
  end
13
15
 
@@ -8,7 +8,9 @@ describe LHS::Service do
8
8
  LHC.config.placeholder(:datastore, datastore)
9
9
  class SomeService < LHS::Service
10
10
  endpoint ':datastore/content-ads/:campaign_id/feedbacks'
11
+ endpoint ':datastore/content-ads/:campaign_id/feedbacks/:id'
11
12
  endpoint ':datastore/feedbacks'
13
+ endpoint ':datastore/feedbacks/:id'
12
14
  end
13
15
  end
14
16
 
@@ -23,6 +23,7 @@ describe LHS::Service do
23
23
  before(:each) do
24
24
  class Feedback < LHS::Service
25
25
  endpoint ':datastore/feedbacks'
26
+ endpoint ':datastore/feedbacks/:id'
26
27
  end
27
28
  stub_campaign_request
28
29
  stub_entry_request
@@ -10,12 +10,13 @@ describe LHS::Service do
10
10
  LHC.config.placeholder('datastore', datastore)
11
11
  class LocalEntry < LHS::Service
12
12
  endpoint ':datastore/local-entries'
13
+ endpoint ':datastore/local-entries/:id'
13
14
  end
14
15
  end
15
16
 
16
17
  it 'maps some attr accessors to another target (proxy)' do
17
18
  class LocalEntry < LHS::Service
18
- map :name, ->(entry){ entry.addresses.first.business.identities.first.name }
19
+ map :name, ->{ addresses.first.business.identities.first.name }
19
20
  end
20
21
  stub_request(:get, "#{datastore}/local-entries/1")
21
22
  .to_return(status: 200, body: {addresses: [{business: {identities: [{name: 'Löwenzorn'}]}}]}.to_json)
@@ -25,7 +26,7 @@ describe LHS::Service do
25
26
 
26
27
  it 'maps for root_item even if that item is nested in a root collection' do
27
28
  class LocalEntry < LHS::Service
28
- map :name, ->(entry){ entry.addresses.first.business.identities.first.name }
29
+ map :name, ->{ addresses.first.business.identities.first.name }
29
30
  end
30
31
  stub_request(:get, "#{datastore}/local-entries/1?limit=1")
31
32
  .to_return(status: 200, body: {items: [{addresses: [{business: {identities: [{name: 'Löwenzorn'}]}}]}]}.to_json)
@@ -35,7 +36,7 @@ describe LHS::Service do
35
36
 
36
37
  it 'return data proxy in case of item or collection' do
37
38
  class LocalEntry < LHS::Service
38
- map :business, ->(entry){ entry.addresses.first.business }
39
+ map :business, ->{ addresses.first.business }
39
40
  end
40
41
  stub_request(:get, "#{datastore}/local-entries/1")
41
42
  .to_return(status: 200, body: {addresses: [{business: {identities: [{name: 'Löwenzorn'}]}}]}.to_json)
@@ -46,7 +47,7 @@ describe LHS::Service do
46
47
  it 'clones mappings when using include' do
47
48
  class Agb < LHS::Service
48
49
  endpoint ":datastore/agbs/active?agb_type=CC_TOU"
49
- map :pdf_url, ->(agb) { agb['binary_url_pdf_de'] }
50
+ map :pdf_url, -> { self['binary_url_pdf_de'] }
50
51
  end
51
52
 
52
53
  preceding_agb_url = "#{datastore}/agbs/547f0b461c266c4830ea6cea"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.0.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-10-06 00:00:00.000000000 Z
11
+ date: 2015-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lhc