ecoportal-api 0.5.3 → 0.6.0

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: a89994e76cf541159975756271aa254c709696347e1a5eb9b2181dbea8b54d25
4
- data.tar.gz: 4ef1d5c9ad068faad4922fac5dae85f6fc6e629271b0680c1ee5010a4aadf424
3
+ metadata.gz: f58ff9e368c2607a55aed0c5e62d45e7c51f37baac25d5da83c4ce6dd4224733
4
+ data.tar.gz: c8bcd11749dfcd0a57650ba25a3d826e209b871c472c2cabbb9e61c01bbaa563
5
5
  SHA512:
6
- metadata.gz: 21db065f98ef0aa1afe59b5b4766474691eaad98c78d0175f7d1161585f8f8bfa07426ee9edd4f056439e5dffc1d94bd608a2124411bd68fc051537b11048aa5
7
- data.tar.gz: 32b98b96710d3147ab2fde5f32b982e2d8a3ea234cd8c2c1eb707bdb98cf46a62a9f905caae2cfeb2889b62793bb1285c5c8215598da917f7ff944f951328828
6
+ metadata.gz: 0e730eff886dd4f908e1bdd52b468b513c4e0309b7be47e3461bd7ef7f81c91d6d9dd4e61c8bdc681132bb310dd423bc62c3379510701d9c71e3f4847688fd3e
7
+ data.tar.gz: dba899cde0099074a44549cd05fedcd3a72e57ca81403a9399411f67c6575db40fe170f63fda7ded3e6d4fa626db2dd0dd33df1eaf3b7058d3cb9aec83e53792
@@ -0,0 +1,53 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ ## [0.6.0] - 2020-07-xx
5
+
6
+ ### Added
7
+ - `Ecoportal::API::Common::BaseModel#initial_doc`: `#consolidate!` modifies `original_doc`
8
+ - this helper allows to know what was the initial document the object was created with
9
+ - `Ecoportal::API::Common::BaseModel#as_update`: added parameter (default: `:last` => compare with `original_doc`)
10
+ - calling it with `:total` will compare the current `doc` with the `initial_doc`
11
+ ### Changed
12
+ - `Ecoportal::API::Internal::Permissions`: **update for new abilities of ecoPortal release `1.5.0`**
13
+ - added abilities: `person_core`, `person_account`, `person_details`
14
+ - removed ability: `people`
15
+ - renamed `print` to `pretty_print` to avoid overriding `$stdout.print`, on:
16
+ - `Ecoportal::API::Common::BaseModel`
17
+ - `Ecoportal::API::Common::BatchReponse`
18
+ - `Ecoportal::API::Common::Response`
19
+ - `Ecoportal::API::Common::WrappedResponse`
20
+ ### Fixed
21
+ - `Ecoportal::API::Internal::Preferences`: **kiosk** settings should default to `false` (`nil`)
22
+
23
+ ## [0.5.8] - 2020-06-23
24
+
25
+ ### Added
26
+ ### Changed
27
+ ### Fixed
28
+ - `Ecoportal::API::V1::Person#filter_tags=`: `original_doc["filter_tags"]` is `nil` when creating a person
29
+ - `Ecoportal::API::Internal::Account#policy_group_ids=`: `original_doc["account"]` is `nil` when creating a person
30
+
31
+
32
+ ## [0.5.7] - 2020-06-22
33
+
34
+ ### Added
35
+ - `Ecoportal::API::V1::PersonSchema`: added `enable_tags` & `tags` properties
36
+ - `Ecoportal::API::Internal::Preferences`: added missing fields for **kiosk**
37
+ ### Changed
38
+ - `Ecoportal::API::V1::People::JOB_TIMEOUT`: from 1 minute to 3 minutes
39
+ - `Ecoportal::API::V1::Person#filter_tags=`: will preserve the original order of the matching tags
40
+ * this change is to prevent `as_update` to generate false update positives
41
+ - `Ecoportal::API::Internal::Account#policy_group_ids=`: will preserve the original order of the matching ids
42
+ * this change is to prevent `as_update` to generate false update positives
43
+ ### Fixed
44
+ - `Ecoportal::API::Internal::Preferences`: access `doc` using string keys (not with `symbol` keys)
45
+
46
+
47
+ ## [0.5.6] - 2020-06-08
48
+
49
+ ### Added
50
+ - this `CHANGELOG.md` file
51
+ - person model: `freemium` core property
52
+ ### Changed
53
+ ### Fixed
@@ -20,12 +20,12 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.16"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.0"
23
+ spec.add_development_dependency "bundler", "~> 2.1", ">= 2.1.3"
24
+ spec.add_development_dependency "rake", "~> 12.0"
25
+ spec.add_development_dependency "rspec", "~> 3", ">= 3.9"
26
26
  spec.add_development_dependency "yard", "~> 0.9", ">= 0.9.18"
27
- spec.add_development_dependency "redcarpet", "~> 3.4", ">= 3.4.0"
28
- spec.add_development_dependency "pry"
27
+ spec.add_development_dependency "redcarpet", "~> 3.5", ">= 3.5.0"
28
+ spec.add_development_dependency "pry" , "~> 0.13"
29
29
 
30
30
  spec.add_dependency 'http', '~> 3'
31
31
  spec.add_dependency 'hash-polyfill', '~> 0'
@@ -48,6 +48,7 @@ module Ecoportal
48
48
  if !_parent || !_key
49
49
  @doc = doc
50
50
  @original_doc = JSON.parse(@doc.to_json)
51
+ @initial_doc = JSON.parse(@doc.to_json)
51
52
  end
52
53
  end
53
54
 
@@ -63,6 +64,12 @@ module Ecoportal
63
64
  _parent.original_doc.dig(*[_key].flatten)
64
65
  end
65
66
 
67
+ def initial_doc
68
+ raise UnlinkedModel.new unless linked?
69
+ return @initial_doc if is_root?
70
+ _parent.initial_doc.dig(*[_key].flatten)
71
+ end
72
+
66
73
  def as_json
67
74
  doc
68
75
  end
@@ -71,9 +78,10 @@ module Ecoportal
71
78
  doc.to_json(*args)
72
79
  end
73
80
 
74
- def as_update
81
+ def as_update(ref = :last)
75
82
  new_doc = as_json
76
- Common::HashDiff.diff(new_doc, original_doc)
83
+ ref_doc = ref == :total ? initial_doc : original_doc
84
+ Common::HashDiff.diff(new_doc, ref_doc)
77
85
  end
78
86
 
79
87
  def dirty?
@@ -100,7 +108,7 @@ module Ecoportal
100
108
  end
101
109
  end
102
110
 
103
- def print
111
+ def pretty_print
104
112
  puts JSON.pretty_generate(as_json)
105
113
  self
106
114
  end
@@ -20,10 +20,10 @@ module Ecoportal
20
20
  yield doc
21
21
  end
22
22
  end
23
-
24
- def print
23
+
24
+ def pretty_print
25
25
  if success?
26
- each(&:print)
26
+ each(&:pretty_print)
27
27
  else
28
28
  puts "Request failed."
29
29
  end
@@ -19,8 +19,8 @@ module Ecoportal
19
19
  def success?
20
20
  @status.success?
21
21
  end
22
-
23
- def print
22
+
23
+ def pretty_print
24
24
  puts "Status: #{@status.code}"
25
25
  puts "Body:"
26
26
  puts JSON.pretty_generate(@body)
@@ -40,14 +40,14 @@ module Ecoportal
40
40
  response.success?
41
41
  end
42
42
 
43
- def print
43
+ def pretty_print
44
44
  if success?
45
- each(&:print)
45
+ each(&:pretty_print)
46
46
  else
47
47
  puts "Request failed."
48
48
  end
49
49
  end
50
-
50
+
51
51
  end
52
52
  end
53
53
  end
@@ -12,6 +12,17 @@ module Ecoportal
12
12
  embeds_one :permissions, key: "permissions_custom", klass: :permissions_class
13
13
  embeds_one :preferences, klass: :preferences_class
14
14
 
15
+ # Sets the `policy_group_ids`
16
+ def policy_group_ids=(value)
17
+ unless value.is_a?(Array)
18
+ raise "policy_group_ids= needs to be passed an Array, got #{value.class}"
19
+ end
20
+
21
+ ini_ids = (original_doc && original_doc["policy_group_ids"]) || []
22
+ # preserve original order to avoid false updates
23
+ doc["policy_group_ids"] = (ini_ids & value) + (value - ini_ids)
24
+ end
25
+
15
26
  # Sets the `permissions_preset`.
16
27
  # @note basically the same as `permissions_preset=` but when `"custom"`, it's changed to `nil`
17
28
  # @param value [nil, String] preset name.
@@ -2,7 +2,9 @@ module Ecoportal
2
2
  module API
3
3
  class Internal
4
4
  class Permissions < Common::BaseModel
5
- passthrough :files, :data, :reports, :organization, :people, :pages, :page_editor, :registers
5
+ passthrough :files, :data, :reports
6
+ passthrough :organization, :person_core, :person_account, :person_details
7
+ passthrough :pages, :page_editor, :registers
6
8
  end
7
9
  end
8
10
  end
@@ -2,6 +2,10 @@ module Ecoportal
2
2
  module API
3
3
  class Internal
4
4
  class Preferences < Common::BaseModel
5
+ passthrough :kiosk_enabled, :kiosk_workflow_message, :kiosk_create_button_label,
6
+ :kiosk_create_button_help, :kiosk_return_button_label, :kiosk_return_button_help,
7
+ :kiosk_dashboard_button_label, :kiosk_dashboard_button_help
8
+
5
9
  [
6
10
  :show_sidebar,
7
11
  :show_shortcuts,
@@ -9,7 +13,7 @@ module Ecoportal
9
13
  :show_recently_visited_forms,
10
14
  :show_tasks,
11
15
  :show_task_bubbles
12
- ].each do |field|
16
+ ].map(&:to_s).each do |field|
13
17
  define_method(field) do
14
18
  if doc.key?(field)
15
19
  doc[field]
@@ -7,7 +7,7 @@ module Ecoportal
7
7
  include Enumerable
8
8
  include Common::DocHelpers
9
9
 
10
- JOB_TIMEOUT = 60
10
+ JOB_TIMEOUT = 240
11
11
  DELAY_STATUS_CHECK = 5
12
12
 
13
13
  class_resolver :person_class, "Ecoportal::API::V1::Person"
@@ -22,7 +22,7 @@ module Ecoportal
22
22
 
23
23
  # Iterates all the people of the organization.
24
24
  # @note
25
- # - it ignores the key `results_from:` of `params:`.
25
+ # - it ignores the key `cursor_id:` of `params:`.
26
26
  # - `each` is called by `to_a`
27
27
  # @param params [Hash]
28
28
  # @option params [String] :per_page the number of people you get per request.
@@ -31,15 +31,15 @@ module Ecoportal
31
31
  # @yieldparam person [Person]
32
32
  def each(params: {}, &block)
33
33
  return to_enum(:each) unless block
34
- results_from = nil
34
+ cursor_id = nil
35
35
  loop do
36
- params.update(results_from: results_from) if results_from
36
+ params.update(cursor_id: cursor_id) if cursor_id
37
37
  response = client.get("/people", params: params)
38
38
  raise "Request failed." unless response.success?
39
39
  response.body["results"].each do |person|
40
40
  yield person_class.new(person)
41
41
  end
42
- break unless (results_from = response.body["next_results_from"])
42
+ break unless (cursor_id = response.body["cursor_id"])
43
43
  end
44
44
  self
45
45
  end
@@ -8,7 +8,7 @@ module Ecoportal
8
8
  # @attr_reader subordinates [Integer] the number of people this person is supervisor of.
9
9
  # @attr details [PersonDetails, nil] the details of the person or `nil` if missing.
10
10
  class Person < Common::BaseModel
11
- passthrough :id, :external_id, :name, :email, :supervisor_id, :subordinates, :filter_tags
11
+ passthrough :id, :external_id, :name, :email, :supervisor_id, :subordinates, :filter_tags, :freemium
12
12
 
13
13
  class_resolver :person_schema_class, "Ecoportal::API::V1::PersonSchema"
14
14
  class_resolver :person_details_class, "Ecoportal::API::V1::PersonDetails"
@@ -49,12 +49,16 @@ module Ecoportal
49
49
  unless value.is_a?(Array)
50
50
  raise "filter_tags= needs to be passed an Array, got #{value.class}"
51
51
  end
52
- doc["filter_tags"] = value.map do |tag|
52
+ end_tags = value.map do |tag|
53
53
  unless tag.match(VALID_TAG_REGEX)
54
54
  raise "Invalid filter tag #{tag.inspect}"
55
55
  end
56
56
  tag.upcase
57
57
  end
58
+
59
+ ini_tags = (original_doc && original_doc["filter_tags"]) || []
60
+ # preserve original order to avoid false updates
61
+ doc["filter_tags"] = (ini_tags & end_tags) + (end_tags - ini_tags)
58
62
  end
59
63
 
60
64
  def as_json
@@ -3,6 +3,7 @@ module Ecoportal
3
3
  class V1
4
4
  class PersonSchema < Common::BaseModel
5
5
  passthrough :id, :name
6
+ passthrough :enable_tags, :tags
6
7
 
7
8
  class_resolver :schema_field_class, "Ecoportal::API::V1::SchemaField"
8
9
 
@@ -1,5 +1,5 @@
1
1
  module Ecoportal
2
2
  module API
3
- VERSION = "0.5.3"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecoportal-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tapio Saarinen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-16 00:00:00.000000000 Z
11
+ date: 2020-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,42 +16,54 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '2.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.1.3
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '1.16'
29
+ version: '2.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.1.3
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rake
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: '10.0'
39
+ version: '12.0'
34
40
  type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
44
  - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: '10.0'
46
+ version: '12.0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: rspec
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '3.0'
53
+ version: '3'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '3.9'
48
57
  type: :development
49
58
  prerelease: false
50
59
  version_requirements: !ruby/object:Gem::Requirement
51
60
  requirements:
52
61
  - - "~>"
53
62
  - !ruby/object:Gem::Version
54
- version: '3.0'
63
+ version: '3'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '3.9'
55
67
  - !ruby/object:Gem::Dependency
56
68
  name: yard
57
69
  requirement: !ruby/object:Gem::Requirement
@@ -78,34 +90,34 @@ dependencies:
78
90
  requirements:
79
91
  - - ">="
80
92
  - !ruby/object:Gem::Version
81
- version: 3.4.0
93
+ version: 3.5.0
82
94
  - - "~>"
83
95
  - !ruby/object:Gem::Version
84
- version: '3.4'
96
+ version: '3.5'
85
97
  type: :development
86
98
  prerelease: false
87
99
  version_requirements: !ruby/object:Gem::Requirement
88
100
  requirements:
89
101
  - - ">="
90
102
  - !ruby/object:Gem::Version
91
- version: 3.4.0
103
+ version: 3.5.0
92
104
  - - "~>"
93
105
  - !ruby/object:Gem::Version
94
- version: '3.4'
106
+ version: '3.5'
95
107
  - !ruby/object:Gem::Dependency
96
108
  name: pry
97
109
  requirement: !ruby/object:Gem::Requirement
98
110
  requirements:
99
- - - ">="
111
+ - - "~>"
100
112
  - !ruby/object:Gem::Version
101
- version: '0'
113
+ version: '0.13'
102
114
  type: :development
103
115
  prerelease: false
104
116
  version_requirements: !ruby/object:Gem::Requirement
105
117
  requirements:
106
- - - ">="
118
+ - - "~>"
107
119
  - !ruby/object:Gem::Version
108
- version: '0'
120
+ version: '0.13'
109
121
  - !ruby/object:Gem::Dependency
110
122
  name: http
111
123
  requirement: !ruby/object:Gem::Requirement
@@ -149,8 +161,8 @@ files:
149
161
  - ".rubocop.yml"
150
162
  - ".travis.yml"
151
163
  - ".yardopts"
164
+ - CHANGELOG.md
152
165
  - Gemfile
153
- - Gemfile.lock
154
166
  - LICENSE
155
167
  - README.md
156
168
  - Rakefile
@@ -215,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
215
227
  - !ruby/object:Gem::Version
216
228
  version: '0'
217
229
  requirements: []
218
- rubygems_version: 3.0.4
230
+ rubygems_version: 3.0.3
219
231
  signing_key:
220
232
  specification_version: 4
221
233
  summary: A collection of helpers for interacting with the ecoPortal MS's various APIs