ecoportal-api 0.4.3 → 0.5.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 +4 -4
- data/ecoportal-api.gemspec +1 -1
- data/lib/ecoportal/api/internal/account.rb +2 -20
- data/lib/ecoportal/api/internal/person.rb +1 -4
- data/lib/ecoportal/api/v1/person.rb +19 -1
- data/lib/ecoportal/api/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af4b4d055b75875f58319c3299a216403457a9fbdf10cbaa3a731943e5a8bf82
|
4
|
+
data.tar.gz: c8ff8f7b9a60fd8b272dfb79d571d3c4d30ee70d59e389bbc538f1f839b7297f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 806e76c2333dc8d415b3937894d508741a7b5d2c9badcab2cfb6da61938516a8eb2b812ba804c23f5e9ef83f86ff56cfcdbf4028cb57490f842d538701fbfd42
|
7
|
+
data.tar.gz: d4d1ffea2980774fd9d5b42d91aa00c2d757de97e99d1e1d086591e544e9d5612d6a2b7b629e713313d7e142e7502f7a282e4cefe6d8dd2c9ad2fc7705369c55
|
data/ecoportal-api.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "ecoportal-api"
|
8
8
|
spec.version = Ecoportal::API::VERSION
|
9
9
|
spec.authors = ["Tapio Saarinen"]
|
10
|
-
spec.email = ["tapio@ecoportal.co.nz"]
|
10
|
+
spec.email = ["tapio@ecoportal.co.nz", "rien@ecoportal.co.nz", "oscar@ecoportal.co.nz"]
|
11
11
|
|
12
12
|
spec.summary = %q{A collection of helpers for interacting with the ecoPortal MS's various APIs}
|
13
13
|
spec.homepage = "https://www.ecoportal.com"
|
@@ -3,17 +3,15 @@ module Ecoportal
|
|
3
3
|
class Internal
|
4
4
|
class Account < Common::BaseModel
|
5
5
|
passthrough :policy_group_ids, :landing_page_id, :permissions_preset, :permissions_custom,
|
6
|
-
:preferences, :prefilter, :
|
6
|
+
:preferences, :prefilter, :login_provider_ids, :starred_ids, :accept_eula,
|
7
7
|
:send_invites, :default_tag
|
8
8
|
|
9
9
|
class_resolver :preferences_class, "Ecoportal::API::Internal::Preferences"
|
10
10
|
class_resolver :permissions_class, "Ecoportal::API::Internal::Permissions"
|
11
|
-
|
11
|
+
|
12
12
|
embeds_one :permissions, key: "permissions_custom", klass: :permissions_class
|
13
13
|
embeds_one :preferences, klass: :preferences_class
|
14
14
|
|
15
|
-
VALID_TAG_REGEX = /^[A-Za-z0-9 &_'\/-]+$/
|
16
|
-
|
17
15
|
# Sets the `permissions_preset`.
|
18
16
|
# @note basically the same as `permissions_preset=` but when `"custom"`, it's changed to `nil`
|
19
17
|
# @param value [nil, String] preset name.
|
@@ -28,22 +26,6 @@ module Ecoportal
|
|
28
26
|
self.permissions_preset.nil? ? "custom" : self.permissions_preset
|
29
27
|
end
|
30
28
|
|
31
|
-
# Validates the string tags of the array, and sets the `filter_tags` property of the account.
|
32
|
-
# @note all is set in upper case.
|
33
|
-
# @raise [Exception] if there was any invalid string tag.
|
34
|
-
# @param value [Array<String>] array of tags.
|
35
|
-
def filter_tags=(value)
|
36
|
-
unless value.is_a?(Array)
|
37
|
-
raise "filter_tags= needs to be passed an Array, got #{value.class}"
|
38
|
-
end
|
39
|
-
doc["filter_tags"] = value.map do |tag|
|
40
|
-
unless tag.match(VALID_TAG_REGEX)
|
41
|
-
raise "Invalid filter tag #{tag.inspect}"
|
42
|
-
end
|
43
|
-
tag.upcase
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
29
|
def as_json
|
48
30
|
super.tap do |hash|
|
49
31
|
if preset == "custom"
|
@@ -25,10 +25,7 @@ module Ecoportal
|
|
25
25
|
when Internal::Account
|
26
26
|
doc["account"] = JSON.parse(value.to_json)
|
27
27
|
when Hash
|
28
|
-
|
29
|
-
# => missing send_invites
|
30
|
-
# => better use an Internal::Account::PROPERTIES const for this kind of stuff
|
31
|
-
doc["account"] = value.slice(%w[policy_group_ids landing_page_id permissions_preset permissions_custom preferences prefilter filter_tags login_provider_ids starred_ids])
|
28
|
+
doc["account"] = value.slice(*%w[policy_group_ids landing_page_id permissions_preset permissions_custom preferences prefilter login_provider_ids starred_ids])
|
32
29
|
else
|
33
30
|
# TODO
|
34
31
|
raise "Invalid set on account: Need nil, Account or Hash; got #{value.class}"
|
@@ -8,12 +8,14 @@ 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
|
11
|
+
passthrough :id, :external_id, :name, :email, :supervisor_id, :subordinates, :filter_tags
|
12
12
|
|
13
13
|
class_resolver :person_schema_class, "Ecoportal::API::V1::PersonSchema"
|
14
14
|
class_resolver :person_details_class, "Ecoportal::API::V1::PersonDetails"
|
15
15
|
embeds_one :details, nullable: true, klass: :person_details_class
|
16
16
|
|
17
|
+
VALID_TAG_REGEX = /^[A-Za-z0-9 &_'\/-]+$/
|
18
|
+
|
17
19
|
# Gets the supervisor (`Person`) of this person, with given his `supervisor_id`.
|
18
20
|
#
|
19
21
|
# **Example Usage**:
|
@@ -39,6 +41,22 @@ module Ecoportal
|
|
39
41
|
self.supervisor_id = person&.id || person&.external_id
|
40
42
|
end
|
41
43
|
|
44
|
+
# Validates the string tags of the array, and sets the `filter_tags` property of the account.
|
45
|
+
# @note all is set in upper case.
|
46
|
+
# @raise [Exception] if there was any invalid string tag.
|
47
|
+
# @param value [Array<String>] array of tags.
|
48
|
+
def filter_tags=(value)
|
49
|
+
unless value.is_a?(Array)
|
50
|
+
raise "filter_tags= needs to be passed an Array, got #{value.class}"
|
51
|
+
end
|
52
|
+
doc["filter_tags"] = value.map do |tag|
|
53
|
+
unless tag.match(VALID_TAG_REGEX)
|
54
|
+
raise "Invalid filter tag #{tag.inspect}"
|
55
|
+
end
|
56
|
+
tag.upcase
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
42
60
|
def as_json
|
43
61
|
super.merge "details" => details&.as_json
|
44
62
|
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.
|
4
|
+
version: 0.5.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-
|
11
|
+
date: 2019-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -123,6 +123,8 @@ dependencies:
|
|
123
123
|
description:
|
124
124
|
email:
|
125
125
|
- tapio@ecoportal.co.nz
|
126
|
+
- rien@ecoportal.co.nz
|
127
|
+
- oscar@ecoportal.co.nz
|
126
128
|
executables: []
|
127
129
|
extensions: []
|
128
130
|
extra_rdoc_files: []
|