lhs 9.0.0 → 9.0.1

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: a67846d69ae33c0fc39973108dcad1e2b996fd60
4
- data.tar.gz: 231e57735eeb0ce6a71a567d311148a69257178a
3
+ metadata.gz: f5c5dde69a8e71e9f37d3b769c04b865ec6d97cf
4
+ data.tar.gz: ceaf6a4a5c87d83448c317522d06b475aaf411ff
5
5
  SHA512:
6
- metadata.gz: 91193cb240275698ce0e2571ff24588cc411f4111260663fce90258c20f2cf9c37b346abcefc40ca91661aeb6b46fff39c6ee4339dcb86e8677c81c605a6db3e
7
- data.tar.gz: c13f28d8bea1e6e73dcb0595851195b0c3168eb002268b48b646a636cc52baaf14c0adb8e77708b1b9c6cf1d9416ebd238f4b0b8d71c92d0019ebe39bd672936
6
+ metadata.gz: 0d2adc8b42d6f832313537ae26e2c5228a77dbfa9f917b338e365f972e21a198c5b79f703ac0c7c14bc0282aa59d73499d322f4100861c31461c8dc8e0aae151
7
+ data.tar.gz: 32a78f36ab5f8903386631cd84f005231f90453a0045f1d90045cb7a81e941cb2e49fbd8dbb85c14475582ac3db85998ff7854d2faf4d1116e5ce4832d9979c5
@@ -36,8 +36,10 @@ class LHS::Record
36
36
  # Find an endpoint based on the provided parameters.
37
37
  # If no parameters are provided it finds the base endpoint
38
38
  # otherwise it finds the endpoint that matches the parameters best.
39
- def find_endpoint(params = {})
39
+ def find_endpoint(params = {}, url = nil)
40
40
  endpoint = find_best_endpoint(params) if params && params.keys.count > 0
41
+ endpoint ||= find_endpoint_by_url(url) if url.present?
42
+ endpoint ||= LHC::Endpoint.new(url) if url.present?
41
43
  endpoint ||= find_base_endpoint
42
44
  endpoint
43
45
  end
@@ -80,6 +82,13 @@ class LHS::Record
80
82
  end
81
83
  end
82
84
 
85
+ # Find endpoint by given URL
86
+ def find_endpoint_by_url(url)
87
+ sorted_endpoints.find do |endpoint|
88
+ LHC::Endpoint.match?(url, endpoint.url)
89
+ end
90
+ end
91
+
83
92
  # Sort endpoints by number of placeholders, heighest first
84
93
  def sorted_endpoints
85
94
  endpoints.sort { |a, b| b.placeholders.count <=> a.placeholders.count }
@@ -292,7 +292,7 @@ class LHS::Record
292
292
  def multiple_requests(options)
293
293
  options = options.map do |option|
294
294
  next unless option.present?
295
- process_options(option, find_endpoint(option[:params]))
295
+ process_options(option, find_endpoint(option[:params], option.fetch(:url, nil)))
296
296
  end
297
297
  data = LHC.request(options.compact).map do |response|
298
298
  LHS::Data.new(response.body, nil, self, response.request)
@@ -395,7 +395,7 @@ class LHS::Record
395
395
  options = options.dup
396
396
  including = options.delete(:including)
397
397
  referencing = options.delete(:referencing)
398
- endpoint = find_endpoint(options[:params])
398
+ endpoint = find_endpoint(options[:params], options.fetch(:url, nil))
399
399
  apply_limit!(options) if options[:all]
400
400
  response = LHC.request(process_options(options, endpoint))
401
401
  data = LHS::Data.new(response.body, nil, self, response.request, endpoint)
data/lib/lhs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "9.0.0"
2
+ VERSION = "9.0.1"
3
3
  end
@@ -69,5 +69,24 @@ describe LHS::Record do
69
69
  AnotherRecord.where(campaign_id: 123, entry_id: 123)
70
70
  end
71
71
  end
72
+
73
+ context 'includes data without considering base endpoint of parent record if url is present' do
74
+ before(:each) do
75
+ class Contract < LHS::Record
76
+ endpoint ':datastore/contracts/:id'
77
+ endpoint ':datastore/entry/:entry_id/contracts'
78
+ end
79
+ end
80
+
81
+ it 'uses urls instead of trying to find base endpoint of parent class' do
82
+ stub_request(:get, "#{datastore}/entry/123/contracts?limit=100")
83
+ .to_return(body: [{ product: { href: "#{datastore}/products/LBC" } }].to_json)
84
+ stub_request(:get, "#{datastore}/products/LBC")
85
+ .to_return(body: { name: 'Local Business Card' }.to_json)
86
+ expect(lambda {
87
+ Contract.includes(:product).where(entry_id: '123').all.first
88
+ }).not_to raise_error # Multiple base endpoints found
89
+ end
90
+ end
72
91
  end
73
92
  end
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: 9.0.0
4
+ version: 9.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhs/graphs/contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-03 00:00:00.000000000 Z
11
+ date: 2017-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lhc