ecoportal-api-v2 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +55 -0
  5. data/.travis.yml +5 -0
  6. data/.yardopts +10 -0
  7. data/CHANGELOG.md +171 -0
  8. data/Gemfile +6 -0
  9. data/LICENSE +21 -0
  10. data/README.md +22 -0
  11. data/Rakefile +27 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/ecoportal-api-v2.gemspec +34 -0
  15. data/lib/ecoportal/api-v2.rb +10 -0
  16. data/lib/ecoportal/api/common.rb +18 -0
  17. data/lib/ecoportal/api/common/content.rb +18 -0
  18. data/lib/ecoportal/api/common/content/array_model.rb +286 -0
  19. data/lib/ecoportal/api/common/content/class_helpers.rb +146 -0
  20. data/lib/ecoportal/api/common/content/client.rb +40 -0
  21. data/lib/ecoportal/api/common/content/collection_model.rb +279 -0
  22. data/lib/ecoportal/api/common/content/doc_helpers.rb +67 -0
  23. data/lib/ecoportal/api/common/content/double_model.rb +356 -0
  24. data/lib/ecoportal/api/common/content/hash_diff_patch.rb +183 -0
  25. data/lib/ecoportal/api/common/content/string_digest.rb +27 -0
  26. data/lib/ecoportal/api/common/content/wrapped_response.rb +42 -0
  27. data/lib/ecoportal/api/v2.rb +82 -0
  28. data/lib/ecoportal/api/v2/page.rb +42 -0
  29. data/lib/ecoportal/api/v2/page/component.rb +133 -0
  30. data/lib/ecoportal/api/v2/page/component/action.rb +28 -0
  31. data/lib/ecoportal/api/v2/page/component/action_field.rb +54 -0
  32. data/lib/ecoportal/api/v2/page/component/chart_field.rb +54 -0
  33. data/lib/ecoportal/api/v2/page/component/chart_field/frequency.rb +29 -0
  34. data/lib/ecoportal/api/v2/page/component/chart_field/heatmap.rb +27 -0
  35. data/lib/ecoportal/api/v2/page/component/chart_field/indicator.rb +26 -0
  36. data/lib/ecoportal/api/v2/page/component/chart_field/multiseries.rb +31 -0
  37. data/lib/ecoportal/api/v2/page/component/chart_field/sankey.rb +27 -0
  38. data/lib/ecoportal/api/v2/page/component/chart_field/serie.rb +26 -0
  39. data/lib/ecoportal/api/v2/page/component/chart_field/series_config.rb +23 -0
  40. data/lib/ecoportal/api/v2/page/component/chart_fr_field.rb +32 -0
  41. data/lib/ecoportal/api/v2/page/component/checklist_field.rb +49 -0
  42. data/lib/ecoportal/api/v2/page/component/checklist_item.rb +25 -0
  43. data/lib/ecoportal/api/v2/page/component/date_field.rb +34 -0
  44. data/lib/ecoportal/api/v2/page/component/file.rb +16 -0
  45. data/lib/ecoportal/api/v2/page/component/files_field.rb +13 -0
  46. data/lib/ecoportal/api/v2/page/component/gauge_field.rb +36 -0
  47. data/lib/ecoportal/api/v2/page/component/gauge_stop.rb +88 -0
  48. data/lib/ecoportal/api/v2/page/component/geo_field.rb +13 -0
  49. data/lib/ecoportal/api/v2/page/component/image.rb +16 -0
  50. data/lib/ecoportal/api/v2/page/component/images_field.rb +23 -0
  51. data/lib/ecoportal/api/v2/page/component/law_field.rb +12 -0
  52. data/lib/ecoportal/api/v2/page/component/number_field.rb +12 -0
  53. data/lib/ecoportal/api/v2/page/component/people_field.rb +25 -0
  54. data/lib/ecoportal/api/v2/page/component/plain_text_field.rb +15 -0
  55. data/lib/ecoportal/api/v2/page/component/reference_field.rb +16 -0
  56. data/lib/ecoportal/api/v2/page/component/rich_text_field.rb +13 -0
  57. data/lib/ecoportal/api/v2/page/component/selection_field.rb +78 -0
  58. data/lib/ecoportal/api/v2/page/component/selection_option.rb +25 -0
  59. data/lib/ecoportal/api/v2/page/component/signature_field.rb +25 -0
  60. data/lib/ecoportal/api/v2/page/component/tag_field.rb +14 -0
  61. data/lib/ecoportal/api/v2/page/components.rb +42 -0
  62. data/lib/ecoportal/api/v2/page/section.rb +59 -0
  63. data/lib/ecoportal/api/v2/page/sections.rb +47 -0
  64. data/lib/ecoportal/api/v2/page/stage.rb +29 -0
  65. data/lib/ecoportal/api/v2/page/stages.rb +26 -0
  66. data/lib/ecoportal/api/v2/pages.rb +92 -0
  67. data/lib/ecoportal/api/v2/pages/page_stage.rb +16 -0
  68. data/lib/ecoportal/api/v2/pages/stages.rb +55 -0
  69. data/lib/ecoportal/api/v2/people.rb +31 -0
  70. data/lib/ecoportal/api/v2/registers.rb +89 -0
  71. data/lib/ecoportal/api/v2/registers/page_result.rb +21 -0
  72. data/lib/ecoportal/api/v2/registers/register.rb +37 -0
  73. data/lib/ecoportal/api/v2/registers/stage_result.rb +14 -0
  74. data/lib/ecoportal/api/v2/registers/stages_result.rb +13 -0
  75. data/lib/ecoportal/api/v2/registers/template.rb +12 -0
  76. data/lib/ecoportal/api/v2/version.rb +7 -0
  77. metadata +254 -0
@@ -0,0 +1,89 @@
1
+ module Ecoportal
2
+ module API
3
+ class V2
4
+ # @attr_reader client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
5
+ class Registers
6
+ extend Common::BaseClass
7
+ include Enumerable
8
+ include Common::Content::DocHelpers
9
+
10
+ class_resolver :register_class, "Ecoportal::API::V2::Registers::Register"
11
+ class_resolver :register_search_result_class, "Ecoportal::API::V2::Registers::PageResult"
12
+
13
+ attr_reader :client
14
+
15
+ # @param client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
16
+ # @return [Registers] an instance object ready to make registers api requests.
17
+ def initialize(client)
18
+ @client = client
19
+ end
20
+
21
+ def each(params: {}, &block)
22
+ return to_enum(:each) unless block
23
+ get.each(&block)
24
+ end
25
+
26
+ # Gets all the registers via api request.
27
+ # @return [Enumerable<Register>] an `Enumerable` with all schemas already wrapped as `Register` objects.
28
+ def get
29
+ response = client.get("/templates")
30
+ Common::Content::WrappedResponse.new(response, register_class, key: "registers")
31
+ end
32
+
33
+ # Gets all the oozes/pages of `register_id` matching the `options`
34
+ # @param register_id [String] the `id` of the target register to search on.
35
+ # @param options [Hash] the search options
36
+ # @option options [Hash<Symbol, String>] :query plain search (like the search box in register).
37
+ # @option options [Hash<Symbol, Array<Object>>] :filters the set of filters.
38
+ def search(register_id, options = {})
39
+ # supply a query string
40
+ # or a filter array (copy/paste from dev tools in the browser)
41
+ options = {query: nil, filters: []}.update(options)
42
+ options = {}.tap do |ret|
43
+ options.each do |key, value|
44
+ if key == :filters && value.any?
45
+ ret[key] = {filters: value}.to_json
46
+ else
47
+ ret[key] = value if key
48
+ end
49
+ end
50
+ end
51
+
52
+ cursor_id = nil
53
+ results = 0
54
+ loop do
55
+ options.update(cursor_id: cursor_id) if cursor_id
56
+ response = client.get("/registers/#{register_id}/search", params: options)
57
+ raise "Request failed - Status #{response.status}: #{response.body}" unless response.success?
58
+
59
+ data = response.body["data"]
60
+ unless (total = data["total"]) == 0
61
+ results += data["results"].length
62
+ percent = results * 100 / total
63
+ msg = "Registers SEARCH"
64
+ print "#{msg}: #{percent.round}% (of #{total})\r"
65
+ $stdout.flush
66
+ end
67
+
68
+ data["results"].each do |result|
69
+ object = register_search_result_class.new(result)
70
+ yield object
71
+ end
72
+
73
+ # break unless (cursor_id = data["cursor_id"])
74
+ break if total == results
75
+ end
76
+ self
77
+ end
78
+
79
+
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ require 'ecoportal/api/v2/registers/template'
86
+ require 'ecoportal/api/v2/registers/register'
87
+ require 'ecoportal/api/v2/registers/stage_result'
88
+ require 'ecoportal/api/v2/registers/stages_result'
89
+ require 'ecoportal/api/v2/registers/page_result'
@@ -0,0 +1,21 @@
1
+ module Ecoportal
2
+ module API
3
+ class V2
4
+ class Registers
5
+ class PageResult < Common::Content::DoubleModel
6
+ passkey :id
7
+ passthrough :template_id
8
+ passthrough :name, :state
9
+ passdate :updated_at, :created_at
10
+ passthrough :archive
11
+ passarray :tags, order_matters: false
12
+ passthrough :mould_counter
13
+
14
+ class_resolver :stages_class, "Ecoportal::API::V2::Registers::StagesResult"
15
+ embeds_many :stages, enum_class: :stages_class
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,37 @@
1
+ module Ecoportal
2
+ module API
3
+ class V2
4
+ class Registers
5
+ class Register < Common::Content::DoubleModel
6
+ passkey :id
7
+ passthrough :name
8
+
9
+ class_resolver :template_class, "Ecoportal::API::V2::Registers::Template"
10
+
11
+ def templates_by_id
12
+ @templates_by_id or index_templates
13
+ @templates_by_id
14
+ end
15
+
16
+ def [](id)
17
+ templates_by_id[id]
18
+ end
19
+
20
+ def templates
21
+ templates_by_id.values
22
+ end
23
+
24
+ def index_templates
25
+ @templates_by_id = {}
26
+ doc["templates"].each do |template_doc|
27
+ template = template_class.new(template_doc)
28
+ @templates_by_id[template.id] = template
29
+ end
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,14 @@
1
+ module Ecoportal
2
+ module API
3
+ class V2
4
+ class Registers
5
+ class StageResult < Common::Content::DoubleModel
6
+ passkey :id
7
+ passthrough :name, :state, :complete, :ordering
8
+ passarray :tags, order_matters: false
9
+ passarray :permits
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ module Ecoportal
2
+ module API
3
+ class V2
4
+ class Registers
5
+ class StagesResult < V2::Page::Stages
6
+ class_resolver :stage_class, "Ecoportal::API::V2::Registers::StageResult"
7
+
8
+ self.klass = :stage_class
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ module Ecoportal
2
+ module API
3
+ class V2
4
+ class Registers
5
+ class Template < Common::Content::DoubleModel
6
+ passkey :id
7
+ passthrough :name
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ module Ecoportal
2
+ module API
3
+ class V2
4
+ GEM_VERSION = "0.8.4"
5
+ end
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,254 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ecoportal-api-v2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.4
5
+ platform: ruby
6
+ authors:
7
+ - Oscar Segura
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-02-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.2.11
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.3'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 2.2.11
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.3'
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 3.10.0
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '3.11'
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 3.10.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '3.11'
53
+ - !ruby/object:Gem::Dependency
54
+ name: rake
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 13.0.3
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '13.1'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 13.0.3
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '13.1'
73
+ - !ruby/object:Gem::Dependency
74
+ name: yard
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 0.9.26
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.10'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.9.26
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '0.10'
93
+ - !ruby/object:Gem::Dependency
94
+ name: redcarpet
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 3.5.1
100
+ - - "<"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.6'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 3.5.1
110
+ - - "<"
111
+ - !ruby/object:Gem::Version
112
+ version: '3.6'
113
+ - !ruby/object:Gem::Dependency
114
+ name: pry
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '0.14'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '0.14'
127
+ - !ruby/object:Gem::Dependency
128
+ name: ecoportal-api
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: 0.7.5
134
+ - - "<"
135
+ - !ruby/object:Gem::Version
136
+ version: '0.8'
137
+ type: :runtime
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: 0.7.5
144
+ - - "<"
145
+ - !ruby/object:Gem::Version
146
+ version: '0.8'
147
+ description:
148
+ email:
149
+ - rien@ecoportal.co.nz
150
+ - oscar@ecoportal.co.nz
151
+ - bozydar@ecoportal.co.nz
152
+ executables: []
153
+ extensions: []
154
+ extra_rdoc_files: []
155
+ files:
156
+ - ".gitignore"
157
+ - ".rspec"
158
+ - ".rubocop.yml"
159
+ - ".travis.yml"
160
+ - ".yardopts"
161
+ - CHANGELOG.md
162
+ - Gemfile
163
+ - LICENSE
164
+ - README.md
165
+ - Rakefile
166
+ - bin/console
167
+ - bin/setup
168
+ - ecoportal-api-v2.gemspec
169
+ - lib/ecoportal/api-v2.rb
170
+ - lib/ecoportal/api/common.rb
171
+ - lib/ecoportal/api/common/content.rb
172
+ - lib/ecoportal/api/common/content/array_model.rb
173
+ - lib/ecoportal/api/common/content/class_helpers.rb
174
+ - lib/ecoportal/api/common/content/client.rb
175
+ - lib/ecoportal/api/common/content/collection_model.rb
176
+ - lib/ecoportal/api/common/content/doc_helpers.rb
177
+ - lib/ecoportal/api/common/content/double_model.rb
178
+ - lib/ecoportal/api/common/content/hash_diff_patch.rb
179
+ - lib/ecoportal/api/common/content/string_digest.rb
180
+ - lib/ecoportal/api/common/content/wrapped_response.rb
181
+ - lib/ecoportal/api/v2.rb
182
+ - lib/ecoportal/api/v2/page.rb
183
+ - lib/ecoportal/api/v2/page/component.rb
184
+ - lib/ecoportal/api/v2/page/component/action.rb
185
+ - lib/ecoportal/api/v2/page/component/action_field.rb
186
+ - lib/ecoportal/api/v2/page/component/chart_field.rb
187
+ - lib/ecoportal/api/v2/page/component/chart_field/frequency.rb
188
+ - lib/ecoportal/api/v2/page/component/chart_field/heatmap.rb
189
+ - lib/ecoportal/api/v2/page/component/chart_field/indicator.rb
190
+ - lib/ecoportal/api/v2/page/component/chart_field/multiseries.rb
191
+ - lib/ecoportal/api/v2/page/component/chart_field/sankey.rb
192
+ - lib/ecoportal/api/v2/page/component/chart_field/serie.rb
193
+ - lib/ecoportal/api/v2/page/component/chart_field/series_config.rb
194
+ - lib/ecoportal/api/v2/page/component/chart_fr_field.rb
195
+ - lib/ecoportal/api/v2/page/component/checklist_field.rb
196
+ - lib/ecoportal/api/v2/page/component/checklist_item.rb
197
+ - lib/ecoportal/api/v2/page/component/date_field.rb
198
+ - lib/ecoportal/api/v2/page/component/file.rb
199
+ - lib/ecoportal/api/v2/page/component/files_field.rb
200
+ - lib/ecoportal/api/v2/page/component/gauge_field.rb
201
+ - lib/ecoportal/api/v2/page/component/gauge_stop.rb
202
+ - lib/ecoportal/api/v2/page/component/geo_field.rb
203
+ - lib/ecoportal/api/v2/page/component/image.rb
204
+ - lib/ecoportal/api/v2/page/component/images_field.rb
205
+ - lib/ecoportal/api/v2/page/component/law_field.rb
206
+ - lib/ecoportal/api/v2/page/component/number_field.rb
207
+ - lib/ecoportal/api/v2/page/component/people_field.rb
208
+ - lib/ecoportal/api/v2/page/component/plain_text_field.rb
209
+ - lib/ecoportal/api/v2/page/component/reference_field.rb
210
+ - lib/ecoportal/api/v2/page/component/rich_text_field.rb
211
+ - lib/ecoportal/api/v2/page/component/selection_field.rb
212
+ - lib/ecoportal/api/v2/page/component/selection_option.rb
213
+ - lib/ecoportal/api/v2/page/component/signature_field.rb
214
+ - lib/ecoportal/api/v2/page/component/tag_field.rb
215
+ - lib/ecoportal/api/v2/page/components.rb
216
+ - lib/ecoportal/api/v2/page/section.rb
217
+ - lib/ecoportal/api/v2/page/sections.rb
218
+ - lib/ecoportal/api/v2/page/stage.rb
219
+ - lib/ecoportal/api/v2/page/stages.rb
220
+ - lib/ecoportal/api/v2/pages.rb
221
+ - lib/ecoportal/api/v2/pages/page_stage.rb
222
+ - lib/ecoportal/api/v2/pages/stages.rb
223
+ - lib/ecoportal/api/v2/people.rb
224
+ - lib/ecoportal/api/v2/registers.rb
225
+ - lib/ecoportal/api/v2/registers/page_result.rb
226
+ - lib/ecoportal/api/v2/registers/register.rb
227
+ - lib/ecoportal/api/v2/registers/stage_result.rb
228
+ - lib/ecoportal/api/v2/registers/stages_result.rb
229
+ - lib/ecoportal/api/v2/registers/template.rb
230
+ - lib/ecoportal/api/v2/version.rb
231
+ homepage: https://www.ecoportal.com
232
+ licenses:
233
+ - MIT
234
+ metadata: {}
235
+ post_install_message:
236
+ rdoc_options: []
237
+ require_paths:
238
+ - lib
239
+ required_ruby_version: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: 2.4.4
244
+ required_rubygems_version: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ requirements: []
250
+ rubygems_version: 3.0.3
251
+ signing_key:
252
+ specification_version: 4
253
+ summary: A collection of helpers for interacting with the ecoPortal MS's V2 API
254
+ test_files: []