ecoportal-api-v2 0.8.21 → 0.8.25

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
  SHA256:
3
- metadata.gz: dfc9e699414df7fd4298148668b5b0a95759dc114758614d29da2ba7bc6472de
4
- data.tar.gz: d589c4f84d7f0d55912d6542129bdebc74d599730a8980c1ec83b8317b7dd942
3
+ metadata.gz: 6d0fd873fa135b382e7a8e272ab0bbdee729e6d15ebaceea8b4699fb3af650f2
4
+ data.tar.gz: 55e54d6e2b07d8108f2ca1a915118133ca6d4180519e6c8cafb7eacc449c60b0
5
5
  SHA512:
6
- metadata.gz: 901028e62fb4e10920918815635a7b99b54fb058ab0c79514a338373aa3b9e6b200757f26912876c2b7bf97201e3958353795dea870e7dbc3154e4e1ad578954
7
- data.tar.gz: 85951a26535f34d0cbbc66d35410c8059b83df436359fea19e478196db2b93496f8a17ac0fe048ef231309f2684546fac4cc037076ffb0603b54d03ccb0de22c
6
+ metadata.gz: 907b384d0f7f31fc9f1d656c7e535c814ac7bbe4d0d8034d7c80f924b3896f4cc8855296e871fa0f1c9d4dc4cff12e05bbedd893c4750dc9d34d02d355678531
7
+ data.tar.gz: 9ca8fc0aaf31e37dfd61abdc45e42269abacbb3220b6dcc5fa020a26f5f3e1096dbb2723ed23d8036281db86453c2a187f026877f98e94324a614daa23ae10c2
data/CHANGELOG.md CHANGED
@@ -1,6 +1,34 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [0.8.25] - 2022-02-04
5
+
6
+ ### Added
7
+ - `Ecoportal::API::V2::Page::Component::ReferenceField#add` to add new references
8
+
9
+ ### Changed
10
+ - `Ecoportal::API::Common::Content::HashDiffPatch#patch_data`
11
+ - Added support for model objects with no `patch_ver` (so diffs are calculated as well)
12
+
13
+ ### Fixed
14
+
15
+ ## [0.8.24] - 2022-01-05
16
+
17
+ ### Fixed
18
+ - `Ecoportal::API::V2::Page#stages?` do not generate an object to this purpose
19
+ - `Ecoportal::API::V2::Registers#search` fix typo in print feedback
20
+
21
+ ## [0.8.23] - 2021-12-24
22
+
23
+ ### Added
24
+ - `Ecoportal::API::V2::Registers#search` added more feedback on what is going on
25
+
26
+ ## [0.8.22] - 2021-12-23
27
+
28
+ ### Fixed
29
+ - `Ecoportal::API::V2::Page::Section#add_component` was not using correctly `before` and `after`
30
+ - It was not correctly translating them into the existing component
31
+
4
32
  ## [0.8.21] - 2021-12-15
5
33
 
6
34
  ### Added
@@ -11,7 +39,7 @@ All notable changes to this project will be documented in this file.
11
39
 
12
40
  ### Changed
13
41
  - Re-exposed `Ecoportal::API::V2::Stages#ordered`
14
-
42
+
15
43
  ### Fixed
16
44
  - `Ecoportal::API::V2::Page::Component::ImagesField#images` typo in `klass`
17
45
 
@@ -88,6 +88,7 @@ module Ecoportal
88
88
  elsif a && a.key?("patch_ver")
89
89
  data_hash["patch_ver"] = a["patch_ver"]
90
90
  end
91
+ data_hash.delete("force_patch")
91
92
  end
92
93
  end
93
94
  end
@@ -16,6 +16,14 @@ module Ecoportal
16
16
  end
17
17
  end
18
18
 
19
+ def add(ref_id)
20
+ doc["references"].push({
21
+ "id" => ref_id,
22
+ "weight" => 0,
23
+ "patch_ver" => 0
24
+ })
25
+ end
26
+
19
27
  def to_s(delimiter: "\n")
20
28
  reference_ids.to_a.join(delimiter)
21
29
  end
@@ -137,7 +137,7 @@ module Ecoportal
137
137
  if before
138
138
  before_fld = to_component(before, side: side)
139
139
  elsif after
140
- after_fld = to_component(afterm, side: side)
140
+ after_fld = to_component(after, side: side)
141
141
  end
142
142
 
143
143
  if split?
@@ -145,7 +145,6 @@ module Ecoportal
145
145
  else
146
146
  ids_ary = component_ids
147
147
  end
148
-
149
148
  ids_ary.insert_one(field.id, before: before_fld&.id, after: after_fld&.id)
150
149
  self
151
150
  end
@@ -168,7 +167,7 @@ module Ecoportal
168
167
 
169
168
  fields.find do |fld|
170
169
  found = nil
171
- found ||= !!value if value.is_a?(Ecoportal::API::V2::Page::Component)
170
+ found ||= fld.id == value.id if value.is_a?(Ecoportal::API::V2::Page::Component)
172
171
  found ||= fld.id == value
173
172
  found ||= same_string?(fld.label, value)
174
173
  end
@@ -51,7 +51,7 @@ module Ecoportal
51
51
  end
52
52
 
53
53
  def stages?
54
- self.stages.count > 0
54
+ self.doc["stages"] && (self.stages.count > 0)
55
55
  end
56
56
 
57
57
  # @return [String] with feedback, if for this page instance, there are any of:
@@ -49,7 +49,7 @@ module Ecoportal
49
49
  # Requests to update an existing page via api.
50
50
  # @note It won't launch the update unless there are changes
51
51
  # @param doc [Hash, Page] data that at least contains an `id` (internal or external) of the target page.
52
- # @return [Response] an object with the api response.
52
+ # @return [Ecoportal::API::Common::Response] an object with the api response.
53
53
  def update(doc)
54
54
  body = get_body(doc) # , level: "page"
55
55
  # Launch only if there are changes
@@ -1,3 +1,4 @@
1
+ require 'base64'
1
2
  module Ecoportal
2
3
  module API
3
4
  class V2
@@ -42,18 +43,7 @@ module Ecoportal
42
43
  # @return [Ecoportal::API::V2::Registers, Ecoportal::API::V2::Registers::SearchResults]
43
44
  def search(register_id, options = {})
44
45
  only_first = options.delete(:only_first)
45
- # supply a query string
46
- # or a filter array (copy/paste from dev tools in the browser)
47
- options = {query: nil, filters: []}.update(options)
48
- options = {}.tap do |ret|
49
- options.each do |key, value|
50
- if key == :filters && value.any?
51
- ret[key] = {filters: value}.to_json
52
- else
53
- ret[key] = value if key
54
- end
55
- end
56
- end
46
+ options = build_options(options)
57
47
 
58
48
  if only_first
59
49
  response = client.get("/registers/#{register_id}/search", params: options)
@@ -62,19 +52,23 @@ module Ecoportal
62
52
  end
63
53
 
64
54
  cursor_id = nil
65
- results = 0
55
+ results = 0; total = nil
66
56
  loop do
67
57
  options.update(cursor_id: cursor_id) if cursor_id
68
58
  response = client.get("/registers/#{register_id}/search", params: options)
69
59
  raise "Request failed - Status #{response.status}: #{response.body}" unless response.success?
70
60
 
71
- data = response.body["data"]
72
- unless (total = data["total"]) == 0
61
+ data = response.body["data"]
62
+ total ||= data["total"]
63
+ if total != data["total"]
64
+ msg = "Change of total in search results. Probably due to changes that affect the filter (register: #{register_id}):"
65
+ print_search_status(msg, total, results, cursor_id, data, options)
66
+ #total = data["total"]
67
+ end
68
+
69
+ unless total == 0
73
70
  results += data["results"].length
74
- percent = results * 100 / total
75
- msg = "Registers SEARCH"
76
- print "#{msg}: #{percent.round}% (of #{total})\r"
77
- $stdout.flush
71
+ print_progress(results, total)
78
72
  end
79
73
 
80
74
  data["results"].each do |result|
@@ -83,12 +77,51 @@ module Ecoportal
83
77
  end
84
78
 
85
79
  break if total <= results
80
+ unless data["cursor_id"]
81
+ msg = "Possible error... finishing search for lack of cursor_id in response:"
82
+ print_search_status(msg, total, results, cursor_id, data, options)
83
+ end
86
84
  break unless (cursor_id = data["cursor_id"])
87
85
  end
88
86
  self
89
87
  end
90
88
 
89
+ private
90
+
91
+ def build_options(options)
92
+ # supply a query string
93
+ # or a filter array (copy/paste from dev tools in the browser)
94
+ options = {query: nil, filters: []}.update(options)
95
+ {}.tap do |ret|
96
+ options.each do |key, value|
97
+ if key == :filters && value.any?
98
+ ret[key] = {filters: value}.to_json
99
+ else
100
+ ret[key] = value if key
101
+ end
102
+ end
103
+ end
104
+ end
105
+
106
+ def print_search_status(msg, total, results, cursor_id, data, options)
107
+ msg += "\n"
108
+ msg += " • Original total: #{total}\n"
109
+ msg += " • Current total: #{data&.dig("total")}\n"
110
+ msg += " • Total results retrieved: #{results}\n"
111
+ msg += " • Cursor id: #{cursor_id} (#{Base64.decode64(cursor_id)})\n"
112
+ msg += " • Current cursor results: #{data["results"]&.length}\n"
113
+ msg += " • Next id: #{data["cursor_id"]} (#{Base64.decode64(data["cursor_id"])})\n" if data["cursor_id"]
114
+ msg += " • Options:"
115
+ puts msg
116
+ pp options
117
+ end
91
118
 
119
+ def print_progress(results, total)
120
+ percent = results * 100 / total
121
+ msg = "Registers SEARCH"
122
+ print "#{msg}: #{percent.round}% (of #{total})\r"
123
+ $stdout.flush
124
+ end
92
125
  end
93
126
  end
94
127
  end
@@ -1,5 +1,5 @@
1
1
  module Ecoportal
2
2
  module API
3
- GEM2_VERSION = "0.8.21"
3
+ GEM2_VERSION = "0.8.25"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecoportal-api-v2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.21
4
+ version: 0.8.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-14 00:00:00.000000000 Z
11
+ date: 2022-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler