eac_rest 0.8.0 → 0.9.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
  SHA256:
3
- metadata.gz: 643d41f4e29430fdc1b49bae8b5f161241cdf6a022af0df70634e9df8dd04999
4
- data.tar.gz: 643c87c4f14cca345437f5cf07fe855e5d804008927a7ef24d945d297af9e9d1
3
+ metadata.gz: 263dba755fa31847ff76531c4b4282f7dbcde55e1a422746311251d2705b5d07
4
+ data.tar.gz: b9e606feb6e48a217388a71f261a1b7f134ca21ff576ef87b68807169f96f7f9
5
5
  SHA512:
6
- metadata.gz: 67af3d87c3a01ce868c85c4ff489212e267b6136afa902002340b61ea5f36418a9d0c917fba905d92c84fe6713764988efab1924284cc1788356f6f62e719117
7
- data.tar.gz: 0ed08cabe9f5295ae4c522f6d896e4f31f30522e82dc4a7d9f52a41bd2bf14c8c359611f085c6d4117e893dbb26ac35b1278a2336173755c6c52af260146e0ab
6
+ metadata.gz: d0848f0ad0b5c2eede6a2c166557caca924d1ae2e73cad1cf54720678a0c4b86fee1e9ed3e1364c2cafa1a1183a7703824eb575b8712988d81cf6bbc6b622abd
7
+ data.tar.gz: 65674debf48a454b8716e010360fa927e9ecdb86471539e20865dad151de462562ce3e07ec5f5aeb03819974b44b41a62a9cc41d311c1f91aeaddfbf6b8e9368
data/lib/eac_rest/api.rb CHANGED
@@ -7,6 +7,8 @@ module EacRest
7
7
  # Abstract methods
8
8
  # * self.issue_get_url_suffix(provider_issue_id)
9
9
  class Api
10
+ DEFAULT_ROOT_ENTITY_CLASS_NAME_SUFFIX = 'Root'
11
+
10
12
  require_sub __FILE__, include_modules: true
11
13
  attr_accessor :ssl_verify
12
14
  common_constructor :root_url, :username, :password, default: [nil, nil] do
@@ -16,8 +18,8 @@ module EacRest
16
18
  # @param entity_class [Class]
17
19
  # @param url_suffix [String]
18
20
  # @return [EacRest::Entity]
19
- def entity(entity_class, url_suffix)
20
- entity_class.new(self, request_json(url_suffix))
21
+ def entity(entity_class, data_or_id, options = {})
22
+ entity_class.new(self, data_or_id, options)
21
23
  end
22
24
 
23
25
  def request(service_url_suffix, headers = {}, &body_data_proc)
@@ -53,5 +55,15 @@ module EacRest
53
55
  def build_service_url_suffix(suffix)
54
56
  ::Addressable::URI.parse(suffix)
55
57
  end
58
+
59
+ # @return [EacRest::Entity]
60
+ def root_entity
61
+ @root_entity ||= root_entity_class.new(self, nil)
62
+ end
63
+
64
+ # @return [Class]
65
+ def root_entity_class
66
+ self.class.const_get(DEFAULT_ROOT_ENTITY_CLASS_NAME_SUFFIX)
67
+ end
56
68
  end
57
69
  end
@@ -6,7 +6,11 @@ module EacRest
6
6
  class Entity
7
7
  enable_abstract_methods
8
8
  enable_simple_cache
9
- common_constructor :api, :data_or_id
9
+ enable_listable
10
+ lists.add_symbol :option, :parent
11
+ common_constructor :api, :data_or_id, :options, default: [{}] do
12
+ self.options = ::EacRest::Entity.lists.option.hash_keys_validate!(options)
13
+ end
10
14
 
11
15
  class << self
12
16
  def from_array_data(api, array_data, *args)
@@ -14,20 +18,49 @@ module EacRest
14
18
  end
15
19
  end
16
20
 
21
+ # @param entity_class [Class]
22
+ # @param url_suffix [String]
23
+ # @return [EacRest::Entity]
24
+ def child_entity(entity_class, data_or_id, options = {})
25
+ api.entity(entity_class, data_or_id, options.merge(OPTION_PARENT => self))
26
+ end
27
+
17
28
  # @return [Hash]
18
29
  def data
19
- self.data_or_id = data_from_id unless data_or_id_data?
20
- data_or_id
30
+ if internal_data.blank?
31
+ self.internal_data = data_or_id_data? ? data_or_id : data_from_id
32
+ end
33
+
34
+ internal_data
21
35
  end
22
36
 
23
37
  # @return [Boolean]
24
38
  def data_or_id_data?
25
- data_or_id.is?(::Hash)
39
+ data_or_id.is_a?(::Hash)
26
40
  end
27
41
 
28
42
  # @return [Hash]
29
43
  def data_from_id
30
44
  raise_abstract_method __method__
31
45
  end
46
+
47
+ # @return [Object]
48
+ def id
49
+ data_or_id_data? ? id_from_data : data_or_id
50
+ end
51
+
52
+ # @return [Object]
53
+ def id_from_data
54
+ raise_abstract_method __method__
55
+ end
56
+
57
+ # @return [EacRest::Entity, nil]
58
+ def parent_entity
59
+ options[OPTION_PARENT]
60
+ end
61
+
62
+ private
63
+
64
+ attr_accessor :internal_data
32
65
  end
33
66
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRest
4
- VERSION = '0.8.0'
4
+ VERSION = '0.9.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-30 00:00:00.000000000 Z
11
+ date: 2023-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_envs-http