lhs 0.4.0 → 1.0.0

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: 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