excon-hypermedia 0.5.0 → 0.5.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: 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