excon-hypermedia 0.5.0 → 0.5.1

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: 6bc648cfd5761dfb1236aada3be47b061620a3ad
4
- data.tar.gz: f0fc534b110a5de92cbe548a4dbe5eb4bcb6f5e6
3
+ metadata.gz: f2246dc77b42f4b8b4d785f2436fcdd2baa15439
4
+ data.tar.gz: 3263ec98d4fa234ac388bde913084645c5832fc5
5
5
  SHA512:
6
- metadata.gz: 83c3ec47d43ce609a789f2bf0ae0281822ae0b4ba25b00596516ef7ed54e9ecc8ab4f3e834e642172b4a1560da4c8184aa4f6a6ac611f63dc84f22e19b4ee226
7
- data.tar.gz: 74fb5d0362acce99b511533c487d18612c81f0c8b455d62633c6fd52e74eb8a262429e6873913e5a5f60e5efae9fdda15132c1602b38a3597e02e0573bf929ea
6
+ metadata.gz: 34d5efb5420335cfcdcf89fa6600d504c2e14afa7dc2a6baa1bedb7033640a9fed05f73bb942713c2ee4d6d8980b3eb38b37b6bef6ac87967508fce5081c0e35
7
+ data.tar.gz: 34172c4a37c20c9d9d887f97f48d7a560e36717f590a59d38a4149f34f728ba6184691afeeaee81553b242730a06082c0823650bf82e5c0e336bf5ba813e22f3
@@ -15,10 +15,10 @@ module Excon
15
15
  def request_call(datum)
16
16
  @datum = datum
17
17
 
18
- return super unless datum[:hcp] == true && datum[:method] == :get && find_embedded
18
+ return super unless datum[:hcp] == true && datum[:method] == :get && resource
19
19
 
20
20
  datum[:response] = {
21
- body: @embedded.to_json,
21
+ body: resource.to_json,
22
22
  hcp: true,
23
23
  headers: content_type_header,
24
24
  remote_ip: '127.0.0.1',
@@ -30,22 +30,16 @@ module Excon
30
30
 
31
31
  private
32
32
 
33
- def find_embedded
34
- datum.dig(:hcp_params, :embedded).to_h.each do |_, object|
35
- break if (@embedded = object_to_embedded(object))
36
- end
37
-
38
- @embedded
33
+ def resource
34
+ @resource ||= embedded.find { |name, _| name == relation_name }.to_a[1]
39
35
  end
40
36
 
41
- def object_to_embedded(object)
42
- uri = ::Addressable::URI.new(datum.tap { |h| h.delete(:port) })
37
+ def relation_name
38
+ datum.dig(:hcp_params, :relation)
39
+ end
43
40
 
44
- if object.respond_to?(:to_ary)
45
- object.find { |hash| hash.dig('_links', 'self', 'href') == uri.to_s }
46
- elsif object.dig('_links', 'self', 'href') == uri.to_s
47
- object
48
- end
41
+ def embedded
42
+ datum.dig(:hcp_params, :embedded)
49
43
  end
50
44
 
51
45
  def content_type_header
@@ -58,19 +58,20 @@ module Excon
58
58
  raise UnknownRelationError, "unknown relation: #{name}"
59
59
  end
60
60
 
61
- options = rel_params(params.first.to_h)
61
+ options = rel_params(name, params.first.to_h)
62
62
 
63
63
  link.respond_to?(:to_ary) ? link.map { |l| l.rel(options) } : link.rel(options)
64
64
  end
65
65
 
66
- def rel_params(params)
66
+ def rel_params(name, params)
67
67
  params.merge(
68
- hypermedia: true,
69
68
  hcp: (params[:hcp].nil? ? response.data[:hcp] : params[:hcp]),
70
69
  hcp_params: {
71
70
  content_type: response.headers['Content-Type'],
72
- embedded: resource._embedded
73
- }
71
+ embedded: resource._embedded.to_h,
72
+ relation: name
73
+ },
74
+ hypermedia: true
74
75
  )
75
76
  end
76
77
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Excon
4
4
  module HyperMedia
5
- VERSION = '0.5.0'
5
+ VERSION = '0.5.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: excon-hypermedia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean