ecoportal-api 0.7.5 → 0.8.2
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 +4 -4
- data/CHANGELOG.md +18 -1
- data/ecoportal-api.gemspec +9 -7
- data/lib/ecoportal/api.rb +0 -1
- data/lib/ecoportal/api/common/batch_operation.rb +7 -1
- data/lib/ecoportal/api/v1/people.rb +26 -15
- data/lib/ecoportal/api/v1/person.rb +1 -1
- data/lib/ecoportal/api/version.rb +1 -1
- metadata +55 -50
- data/lib/ecoportal/api/v2.rb +0 -47
- data/lib/ecoportal/api/v2/field.rb +0 -9
- data/lib/ecoportal/api/v2/page.rb +0 -30
- data/lib/ecoportal/api/v2/pages.rb +0 -46
- data/lib/ecoportal/api/v2/register_search_result.rb +0 -20
- data/lib/ecoportal/api/v2/registers.rb +0 -65
- data/lib/ecoportal/api/v2/stage.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba5ffaf73f0c065f6aa6572b5ac82132af9ee19f61692f80605ee156b29d24ee
|
4
|
+
data.tar.gz: d82d89d09d4ae1edb88a3dc01f613478e7bd5ab38184dadb7c507e53e65bae54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3b637bd2bc2970b7f46eb8d92edc6b83a38ef4489d6d185e4cea47d8a5e6cd774d9bf9e8712bd0d76aa9a52c770e89207f0c7af283fcb85bc1cb481d31fca10
|
7
|
+
data.tar.gz: 6a5dd4dd6fd2691971c526e79d2278a84351484a0d9ffdd93e3604392f4b59e21515255001c51016835a37506496d1d292f33c4dc69d4db7042e9c3d521721c3
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,20 @@
|
|
1
1
|
# Change Log
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
-
## [0.
|
4
|
+
## [0.8.2] - 2021-02-xx
|
5
|
+
|
6
|
+
### Added
|
7
|
+
|
8
|
+
### Fixed
|
9
|
+
- `Ecoportal::API::V1::Person#filter_tags=` should ignore `nil` values
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
- removed all the namespace under `Ecoportal::API::V2` as that is managed by `ecoportal-api-oozes` gem
|
13
|
+
- url: https://rubygems.org/gems/ecoportal-api-oozes
|
14
|
+
- `Ecoportal::API::V1::People.get` should return a `Person` object
|
15
|
+
- observe that it was returning the `WrappedResponse` (an `Enumerable` helper that works better when getting multiple people).
|
16
|
+
|
17
|
+
## [0.7.5] - 2021-02-12
|
5
18
|
|
6
19
|
### Added
|
7
20
|
|
@@ -76,6 +89,10 @@ All notable changes to this project will be documented in this file.
|
|
76
89
|
## [0.7.0] - 2020-09-11
|
77
90
|
|
78
91
|
### Added
|
92
|
+
- added hook, **private** method `body_data` for child classes to define behaviour on `response.body` to
|
93
|
+
- `Ecoportal::API::V1::People`
|
94
|
+
- `Ecoportal::API::Common::BatchOperation`
|
95
|
+
|
79
96
|
### Changed
|
80
97
|
- `Ecoportal::API::Internal::Permissions`: **update for new abilities of ecoPortal release `1.5.2`**
|
81
98
|
- decoupled abilities: `person_core` into `person_core_create`, `person_core_edit`
|
data/ecoportal-api.gemspec
CHANGED
@@ -13,6 +13,8 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = "https://www.ecoportal.com"
|
14
14
|
spec.licenses = %w[MIT]
|
15
15
|
|
16
|
+
spec.required_ruby_version = '>= 2.4.4'
|
17
|
+
|
16
18
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
19
|
f.match(%r{^(test|spec|features)/})
|
18
20
|
end
|
@@ -20,13 +22,13 @@ Gem::Specification.new do |spec|
|
|
20
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
23
|
spec.require_paths = ["lib"]
|
22
24
|
|
23
|
-
spec.add_development_dependency "bundler", "
|
24
|
-
spec.add_development_dependency "
|
25
|
-
spec.add_development_dependency "
|
26
|
-
spec.add_development_dependency "yard", "
|
27
|
-
spec.add_development_dependency "redcarpet", "
|
28
|
-
spec.add_development_dependency "pry" , "~> 0.
|
25
|
+
spec.add_development_dependency "bundler", ">= 2.2.11", "< 2.3"
|
26
|
+
spec.add_development_dependency "rspec", ">= 3.10.0", "< 3.11"
|
27
|
+
spec.add_development_dependency "rake", ">= 13.0.3", "< 13.1"
|
28
|
+
spec.add_development_dependency "yard", ">= 0.9.26", "< 0.10"
|
29
|
+
spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
|
30
|
+
spec.add_development_dependency "pry" , "~> 0.14"
|
29
31
|
|
30
|
-
spec.add_dependency 'http', '~> 4'
|
32
|
+
spec.add_dependency 'http', '~> 4.4.1', "< 5"
|
31
33
|
spec.add_dependency 'hash-polyfill', '~> 0'
|
32
34
|
end
|
data/lib/ecoportal/api.rb
CHANGED
@@ -27,7 +27,7 @@ module Ecoportal
|
|
27
27
|
|
28
28
|
log(:info) { "Processing batch responses" }
|
29
29
|
|
30
|
-
response.body.each.with_index do |subresponse, idx|
|
30
|
+
body_data(response.body).each.with_index do |subresponse, idx|
|
31
31
|
callback = @operations[idx][:callback]
|
32
32
|
status = subresponse["status"]
|
33
33
|
body = subresponse["response"]
|
@@ -97,6 +97,12 @@ module Ecoportal
|
|
97
97
|
|
98
98
|
private
|
99
99
|
|
100
|
+
# Hook for other api versions to obtain the raw data of a response
|
101
|
+
# @note this was introduced to allow `v2` to reuse this class
|
102
|
+
def body_data(body)
|
103
|
+
body
|
104
|
+
end
|
105
|
+
|
100
106
|
def log_batch_response(operation, response)
|
101
107
|
level = response.success?? :debug : :warn
|
102
108
|
log(:info) { "BATCH #{operation[:method]} #{operation[:path]}" }
|
@@ -37,10 +37,11 @@ module Ecoportal
|
|
37
37
|
loop do
|
38
38
|
params.update(cursor_id: cursor_id) if cursor_id
|
39
39
|
response = client.get("/people", params: params)
|
40
|
-
|
40
|
+
body = body_data(response.body)
|
41
|
+
raise "Request failed - Status #{response.status}: #{body}" unless response.success?
|
41
42
|
|
42
|
-
unless silent || (total =
|
43
|
-
results +=
|
43
|
+
unless silent || (total = body["total_results"]) == 0
|
44
|
+
results += body["results"].length
|
44
45
|
percent = results * 100 / total
|
45
46
|
msg = "People GET"
|
46
47
|
msg += " (search=#{params[:q]})" if params.key?(:q)
|
@@ -48,10 +49,10 @@ module Ecoportal
|
|
48
49
|
$stdout.flush
|
49
50
|
end
|
50
51
|
|
51
|
-
|
52
|
+
body["results"].each do |person|
|
52
53
|
yield person_class.new(person)
|
53
54
|
end
|
54
|
-
break unless (cursor_id =
|
55
|
+
break unless (cursor_id = body["cursor_id"])
|
55
56
|
end
|
56
57
|
self
|
57
58
|
end
|
@@ -70,10 +71,13 @@ module Ecoportal
|
|
70
71
|
# Gets a person via api.
|
71
72
|
# @note if the request has `success?` the returned `object.result` gives an object with that `Person`.
|
72
73
|
# @param doc [String, Hash, Person] data containing an `id` (internal or external) of the target person.
|
73
|
-
# @return [
|
74
|
+
# @return [Person] the person with `id` (internal or external) contained in `doc`.
|
74
75
|
def get(doc)
|
75
|
-
|
76
|
-
|
76
|
+
id = get_id(doc)
|
77
|
+
response = client.get("/people/"+CGI.escape(id))
|
78
|
+
body = body_data(response.body)
|
79
|
+
return person_class.new(body) if response.success?
|
80
|
+
raise "Could not get person #{id} - Error #{reponse.status}: #{body}"
|
77
81
|
end
|
78
82
|
|
79
83
|
# Requests an update of a person via api.
|
@@ -107,7 +111,7 @@ module Ecoportal
|
|
107
111
|
# @return [Response] an object with the api response.
|
108
112
|
def delete(doc)
|
109
113
|
id = get_id(doc)
|
110
|
-
|
114
|
+
client.delete("/people/"+CGI.escape(id))
|
111
115
|
end
|
112
116
|
|
113
117
|
# Creates a `BatchOperation` and yields it to the given bock.
|
@@ -150,13 +154,13 @@ module Ecoportal
|
|
150
154
|
JobStatus = Struct.new(:id, :complete?, :errored?, :progress)
|
151
155
|
def job_status(job_id)
|
152
156
|
response = client.get("/people/job/#{CGI.escape(job_id)}/status")
|
153
|
-
|
157
|
+
body = body_data(response.body)
|
154
158
|
raise "Status error" unless response.success?
|
155
159
|
JobStatus.new(
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
+
body["id"],
|
161
|
+
body["complete"],
|
162
|
+
body["errored"],
|
163
|
+
body["progress"]
|
160
164
|
)
|
161
165
|
end
|
162
166
|
|
@@ -186,11 +190,18 @@ module Ecoportal
|
|
186
190
|
job_id = nil
|
187
191
|
client.without_response_logging do
|
188
192
|
client.post("/people/job", data: operation.as_json).tap do |response|
|
189
|
-
job_id = response.body["id"]
|
193
|
+
job_id = body_data(response.body)["id"]
|
190
194
|
end
|
191
195
|
end
|
192
196
|
job_id
|
193
197
|
end
|
198
|
+
|
199
|
+
# Hook for other api versions to obtain the raw data of a response
|
200
|
+
# @note this was introduced to allow `v2` to reuse this class
|
201
|
+
def body_data(body)
|
202
|
+
body
|
203
|
+
end
|
204
|
+
|
194
205
|
end
|
195
206
|
end
|
196
207
|
end
|
@@ -59,7 +59,7 @@ module Ecoportal
|
|
59
59
|
unless value.is_a?(Array)
|
60
60
|
raise "filter_tags= needs to be passed an Array, got #{value.class}"
|
61
61
|
end
|
62
|
-
end_tags = value.map do |tag|
|
62
|
+
end_tags = value.compact.map do |tag|
|
63
63
|
unless tag.match(VALID_TAG_REGEX)
|
64
64
|
raise "Invalid filter tag #{tag.inspect}"
|
65
65
|
end
|
metadata
CHANGED
@@ -1,137 +1,149 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecoportal-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tapio Saarinen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.1'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version: 2.
|
19
|
+
version: 2.2.11
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.3'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '2.1'
|
30
27
|
- - ">="
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version: 2.
|
29
|
+
version: 2.2.11
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.3'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: rspec
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 3.10.0
|
40
|
+
- - "<"
|
38
41
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
42
|
+
version: '3.11'
|
40
43
|
type: :development
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
|
-
- - "
|
47
|
+
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
49
|
+
version: 3.10.0
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3.11'
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
54
|
+
name: rake
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|
50
56
|
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '3'
|
54
57
|
- - ">="
|
55
58
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
59
|
+
version: 13.0.3
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '13.1'
|
57
63
|
type: :development
|
58
64
|
prerelease: false
|
59
65
|
version_requirements: !ruby/object:Gem::Requirement
|
60
66
|
requirements:
|
61
|
-
- - "~>"
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '3'
|
64
67
|
- - ">="
|
65
68
|
- !ruby/object:Gem::Version
|
66
|
-
version:
|
69
|
+
version: 13.0.3
|
70
|
+
- - "<"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '13.1'
|
67
73
|
- !ruby/object:Gem::Dependency
|
68
74
|
name: yard
|
69
75
|
requirement: !ruby/object:Gem::Requirement
|
70
76
|
requirements:
|
71
|
-
- - "~>"
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '0.9'
|
74
77
|
- - ">="
|
75
78
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0.9.
|
79
|
+
version: 0.9.26
|
80
|
+
- - "<"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.10'
|
77
83
|
type: :development
|
78
84
|
prerelease: false
|
79
85
|
version_requirements: !ruby/object:Gem::Requirement
|
80
86
|
requirements:
|
81
|
-
- - "~>"
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0.9'
|
84
87
|
- - ">="
|
85
88
|
- !ruby/object:Gem::Version
|
86
|
-
version: 0.9.
|
89
|
+
version: 0.9.26
|
90
|
+
- - "<"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0.10'
|
87
93
|
- !ruby/object:Gem::Dependency
|
88
94
|
name: redcarpet
|
89
95
|
requirement: !ruby/object:Gem::Requirement
|
90
96
|
requirements:
|
91
97
|
- - ">="
|
92
98
|
- !ruby/object:Gem::Version
|
93
|
-
version: 3.5.
|
94
|
-
- - "
|
99
|
+
version: 3.5.1
|
100
|
+
- - "<"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: '3.
|
102
|
+
version: '3.6'
|
97
103
|
type: :development
|
98
104
|
prerelease: false
|
99
105
|
version_requirements: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
107
|
- - ">="
|
102
108
|
- !ruby/object:Gem::Version
|
103
|
-
version: 3.5.
|
104
|
-
- - "
|
109
|
+
version: 3.5.1
|
110
|
+
- - "<"
|
105
111
|
- !ruby/object:Gem::Version
|
106
|
-
version: '3.
|
112
|
+
version: '3.6'
|
107
113
|
- !ruby/object:Gem::Dependency
|
108
114
|
name: pry
|
109
115
|
requirement: !ruby/object:Gem::Requirement
|
110
116
|
requirements:
|
111
117
|
- - "~>"
|
112
118
|
- !ruby/object:Gem::Version
|
113
|
-
version: '0.
|
119
|
+
version: '0.14'
|
114
120
|
type: :development
|
115
121
|
prerelease: false
|
116
122
|
version_requirements: !ruby/object:Gem::Requirement
|
117
123
|
requirements:
|
118
124
|
- - "~>"
|
119
125
|
- !ruby/object:Gem::Version
|
120
|
-
version: '0.
|
126
|
+
version: '0.14'
|
121
127
|
- !ruby/object:Gem::Dependency
|
122
128
|
name: http
|
123
129
|
requirement: !ruby/object:Gem::Requirement
|
124
130
|
requirements:
|
125
131
|
- - "~>"
|
126
132
|
- !ruby/object:Gem::Version
|
127
|
-
version:
|
133
|
+
version: 4.4.1
|
134
|
+
- - "<"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '5'
|
128
137
|
type: :runtime
|
129
138
|
prerelease: false
|
130
139
|
version_requirements: !ruby/object:Gem::Requirement
|
131
140
|
requirements:
|
132
141
|
- - "~>"
|
133
142
|
- !ruby/object:Gem::Version
|
134
|
-
version:
|
143
|
+
version: 4.4.1
|
144
|
+
- - "<"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '5'
|
135
147
|
- !ruby/object:Gem::Dependency
|
136
148
|
name: hash-polyfill
|
137
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -205,13 +217,6 @@ files:
|
|
205
217
|
- lib/ecoportal/api/v1/person_schemas.rb
|
206
218
|
- lib/ecoportal/api/v1/schema_field.rb
|
207
219
|
- lib/ecoportal/api/v1/schema_field_value.rb
|
208
|
-
- lib/ecoportal/api/v2.rb
|
209
|
-
- lib/ecoportal/api/v2/field.rb
|
210
|
-
- lib/ecoportal/api/v2/page.rb
|
211
|
-
- lib/ecoportal/api/v2/pages.rb
|
212
|
-
- lib/ecoportal/api/v2/register_search_result.rb
|
213
|
-
- lib/ecoportal/api/v2/registers.rb
|
214
|
-
- lib/ecoportal/api/v2/stage.rb
|
215
220
|
- lib/ecoportal/api/version.rb
|
216
221
|
homepage: https://www.ecoportal.com
|
217
222
|
licenses:
|
@@ -225,7 +230,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
225
230
|
requirements:
|
226
231
|
- - ">="
|
227
232
|
- !ruby/object:Gem::Version
|
228
|
-
version:
|
233
|
+
version: 2.4.4
|
229
234
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
230
235
|
requirements:
|
231
236
|
- - ">="
|
data/lib/ecoportal/api/v2.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
module Ecoportal
|
2
|
-
module API
|
3
|
-
# @attr_reader client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
|
4
|
-
# @attr_reader logger [Logger] the logger.
|
5
|
-
class V2
|
6
|
-
extend Common::BaseClass
|
7
|
-
include Common::Logging
|
8
|
-
|
9
|
-
VERSION = "v2"
|
10
|
-
class_resolver :registers_class, "Ecoportal::API::V2::Registers"
|
11
|
-
class_resolver :pages_class, "Ecoportal::API::V2::Pages"
|
12
|
-
|
13
|
-
attr_reader :client, :logger
|
14
|
-
|
15
|
-
# Creates an `V2` object to scope version specific api requests.
|
16
|
-
# @note
|
17
|
-
# - The const `VERSION` determineds the api version that client will query against.
|
18
|
-
# - This means that each subclass of `V2` should define their own `VERSION` constant.
|
19
|
-
# @param api_key [String] the key version to stablish the api connection.
|
20
|
-
# @param host [String] api server domain.
|
21
|
-
# @param logger [Logger] an object with `Logger` interface to generate logs.
|
22
|
-
# @return [V2] an object with the api version suit.
|
23
|
-
def initialize(api_key, version: VERSION, host: "live.ecoportal.com", logger: default_logger)
|
24
|
-
@logger = logger
|
25
|
-
@client = Common::Client.new(
|
26
|
-
api_key: api_key,
|
27
|
-
host: host,
|
28
|
-
version: self.class::VERSION,
|
29
|
-
logger: @logger
|
30
|
-
)
|
31
|
-
end
|
32
|
-
|
33
|
-
# Obtain specific object for register api requests.
|
34
|
-
# @return [Register] an instance object ready to make register api requests.
|
35
|
-
def registers
|
36
|
-
registers_class.new(client)
|
37
|
-
end
|
38
|
-
|
39
|
-
def pages
|
40
|
-
pages_class.new(client)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
require 'ecoportal/api/v2/registers'
|
47
|
-
require 'ecoportal/api/v2/pages'
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Ecoportal
|
2
|
-
module API
|
3
|
-
class V2
|
4
|
-
class Page < Common::BaseModel
|
5
|
-
passthrough :id, :name, :state
|
6
|
-
|
7
|
-
class_resolver :stage_class, "Ecoportal::API::V2::Stage"
|
8
|
-
class_resolver :field_class, "Ecoportal::API::V2::Field"
|
9
|
-
|
10
|
-
def stages
|
11
|
-
return nil unless doc["evolution"]
|
12
|
-
return @stages if defined?(@stages)
|
13
|
-
@stages = (doc["evolution"]["stages"] || []).each_with_index.map do |stage, i|
|
14
|
-
stage_class.new(stage, parent: self, key: ["stages", i])
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def fields
|
19
|
-
return @fields if defined?(@fields)
|
20
|
-
@fields = (doc["components"] || []).each_with_index.map do |component, i|
|
21
|
-
field_class.new(component, parent: self, key: ["components", i])
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
require 'ecoportal/api/v2/stage'
|
30
|
-
require 'ecoportal/api/v2/field'
|
@@ -1,46 +0,0 @@
|
|
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 Pages
|
6
|
-
extend Common::BaseClass
|
7
|
-
include Enumerable
|
8
|
-
include Common::DocHelpers
|
9
|
-
|
10
|
-
attr_reader :client
|
11
|
-
|
12
|
-
class_resolver :page_class, "Ecoportal::API::V2::Page"
|
13
|
-
|
14
|
-
# @param client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
|
15
|
-
# @return [People] an instance object ready to make people api requests.
|
16
|
-
def initialize(client)
|
17
|
-
@client = client
|
18
|
-
end
|
19
|
-
|
20
|
-
def get(id, stage_id: nil)
|
21
|
-
if stage_id
|
22
|
-
response = get_with_stage_id(id, stage_id)
|
23
|
-
return page_class.new(response.body["data"])
|
24
|
-
end
|
25
|
-
|
26
|
-
response = client.get("/pages/#{id}")
|
27
|
-
# we get a 302 back when there's stages for the page
|
28
|
-
# let's follow it
|
29
|
-
if response.status == 302
|
30
|
-
stage_id = response.body["data"].match(/stages\/(.*)/)[1]
|
31
|
-
response = get_with_stage_id(id, stage_id)
|
32
|
-
end
|
33
|
-
page_class.new(response.body["data"])
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def get_with_stage_id(id, stage_id)
|
39
|
-
client.get("/pages/#{id}/stages/#{stage_id}")
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
require 'ecoportal/api/v2/page'
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Ecoportal
|
2
|
-
module API
|
3
|
-
class V2
|
4
|
-
class RegisterSearchResult < Common::BaseModel
|
5
|
-
passthrough :id, :name, :state
|
6
|
-
|
7
|
-
class_resolver :stage_class, "Ecoportal::API::V2::Stage"
|
8
|
-
|
9
|
-
def stages
|
10
|
-
return @stages if defined?(@stages)
|
11
|
-
@stages = (doc["stages"] || []).each_with_index.map do |stage, i|
|
12
|
-
stage_class.new(stage, parent: self, key: ["stages", i])
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
require 'ecoportal/api/v2/stage'
|
@@ -1,65 +0,0 @@
|
|
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::DocHelpers
|
9
|
-
|
10
|
-
class_resolver :register_search_result_class, "Ecoportal::API::V2::RegisterSearchResult"
|
11
|
-
|
12
|
-
attr_reader :client
|
13
|
-
|
14
|
-
# @param client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
|
15
|
-
# @return [People] an instance object ready to make people api requests.
|
16
|
-
def initialize(client)
|
17
|
-
@client = client
|
18
|
-
end
|
19
|
-
|
20
|
-
def search(register_id, options = {})
|
21
|
-
# supply a query string
|
22
|
-
# or a filter array (copy/paste from dev tools in the browser)
|
23
|
-
options = {query: nil, filters: []}.update(options)
|
24
|
-
options = {}.tap do |ret|
|
25
|
-
options.each do |key, value|
|
26
|
-
if key == :filters && value.any?
|
27
|
-
ret[key] = {filters: value}.to_json
|
28
|
-
else
|
29
|
-
ret[key] = value if key
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
cursor_id = nil
|
35
|
-
results = 0
|
36
|
-
loop do
|
37
|
-
options.update(cursor_id: cursor_id) if cursor_id
|
38
|
-
response = client.get("/registers/#{register_id}/search", params: options)
|
39
|
-
raise "Request failed - Status #{response.status}: #{response.body}" unless response.success?
|
40
|
-
|
41
|
-
data = response.body["data"]
|
42
|
-
unless (total = data["total"]) == 0
|
43
|
-
results += data["results"].length
|
44
|
-
percent = results * 100 / total
|
45
|
-
msg = "Registers SEARCH"
|
46
|
-
print "#{msg}: #{percent.round}% (of #{total})\r"
|
47
|
-
$stdout.flush
|
48
|
-
end
|
49
|
-
|
50
|
-
data["results"].each do |result|
|
51
|
-
object = register_search_result_class.new(result)
|
52
|
-
yield object
|
53
|
-
end
|
54
|
-
|
55
|
-
# break unless (cursor_id = data["cursor_id"])
|
56
|
-
break if total == results
|
57
|
-
end
|
58
|
-
self
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
require 'ecoportal/api/v2/register_search_result'
|