ecoportal-api 0.8.5 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +20 -20
  3. data/.rspec +3 -3
  4. data/.rubocop.yml +55 -55
  5. data/.travis.yml +5 -5
  6. data/.yardopts +10 -10
  7. data/CHANGELOG.md +257 -236
  8. data/Gemfile +6 -6
  9. data/LICENSE +21 -21
  10. data/README.md +34 -34
  11. data/Rakefile +27 -27
  12. data/bin/console +14 -14
  13. data/bin/setup +8 -8
  14. data/ecoportal-api.gemspec +36 -36
  15. data/lib/ecoportal/api/common/base_class.rb +33 -29
  16. data/lib/ecoportal/api/common/base_model.rb +195 -177
  17. data/lib/ecoportal/api/common/batch_operation.rb +119 -119
  18. data/lib/ecoportal/api/common/batch_response.rb +34 -34
  19. data/lib/ecoportal/api/common/client.rb +198 -196
  20. data/lib/ecoportal/api/common/doc_helpers.rb +29 -29
  21. data/lib/ecoportal/api/common/elastic_apm_integration.rb +112 -112
  22. data/lib/ecoportal/api/common/hash_diff.rb +41 -41
  23. data/lib/ecoportal/api/common/logging.rb +12 -12
  24. data/lib/ecoportal/api/common/response.rb +31 -31
  25. data/lib/ecoportal/api/common/wrapped_response.rb +54 -54
  26. data/lib/ecoportal/api/common.rb +18 -18
  27. data/lib/ecoportal/api/errors/base.rb +8 -8
  28. data/lib/ecoportal/api/errors/time_out.rb +8 -8
  29. data/lib/ecoportal/api/errors.rb +9 -9
  30. data/lib/ecoportal/api/internal/account.rb +99 -100
  31. data/lib/ecoportal/api/internal/login_provider.rb +9 -9
  32. data/lib/ecoportal/api/internal/login_providers.rb +33 -33
  33. data/lib/ecoportal/api/internal/people.rb +14 -14
  34. data/lib/ecoportal/api/internal/permissions.rb +14 -13
  35. data/lib/ecoportal/api/internal/person.rb +101 -53
  36. data/lib/ecoportal/api/internal/person_details.rb +9 -9
  37. data/lib/ecoportal/api/internal/person_schema.rb +10 -10
  38. data/lib/ecoportal/api/internal/person_schemas.rb +11 -11
  39. data/lib/ecoportal/api/internal/policy_group.rb +9 -9
  40. data/lib/ecoportal/api/internal/policy_groups.rb +32 -32
  41. data/lib/ecoportal/api/internal/preferences.rb +31 -31
  42. data/lib/ecoportal/api/internal/schema_field.rb +8 -8
  43. data/lib/ecoportal/api/internal/schema_field_value.rb +8 -8
  44. data/lib/ecoportal/api/internal.rb +31 -31
  45. data/lib/ecoportal/api/logger.rb +62 -62
  46. data/lib/ecoportal/api/v1/people.rb +218 -218
  47. data/lib/ecoportal/api/v1/person.rb +138 -135
  48. data/lib/ecoportal/api/v1/person_details.rb +94 -82
  49. data/lib/ecoportal/api/v1/person_schema.rb +53 -53
  50. data/lib/ecoportal/api/v1/person_schemas.rb +48 -48
  51. data/lib/ecoportal/api/v1/schema_field.rb +34 -34
  52. data/lib/ecoportal/api/v1/schema_field_value.rb +65 -65
  53. data/lib/ecoportal/api/v1.rb +49 -49
  54. data/lib/ecoportal/api/version.rb +5 -5
  55. data/lib/ecoportal/api.rb +16 -16
  56. metadata +3 -3
@@ -1,100 +1,99 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- class Account < Common::BaseModel
5
- PROPERTIES = [
6
- "user_id", "policy_group_ids", "default_tag", "prefilter",
7
- "permissions_custom", "permissions_merged", "preferences",
8
- "login_provider_ids", "starred_ids", "landing_page_id",
9
- "accept_eula", "send_invites", "force_send_invites"
10
- ]
11
- passthrough *PROPERTIES.map(&:to_sym)
12
-
13
- class_resolver :preferences_class, "Ecoportal::API::Internal::Preferences"
14
- class_resolver :permissions_class, "Ecoportal::API::Internal::Permissions"
15
-
16
- embeds_one :permissions, key: "permissions_custom", klass: :permissions_class
17
- embeds_one :perms_merged, key: "permissions_merged", klass: :permissions_class
18
- embeds_one :preferences, klass: :preferences_class
19
-
20
- # Sets the `default_tag` of the user
21
- # @note it upcases the value
22
- # @param value [String, nil] the tag
23
- # @return [String, nil] the value set in `default_tag`
24
- def default_tag=(value)
25
- unless !value || value.is_a?(String)
26
- raise ArgumentError.new("default_tag= needs to be passed a String or nil, got #{value.class}")
27
- end
28
- if value
29
- unless value.match(Ecoportal::API::V1::Person::VALID_TAG_REGEX)
30
- raise ArgumentError.new("Invalid default tag #{value.inspect}")
31
- end
32
- value = value.upcase
33
- end
34
- doc["default_tag"] = value
35
- end
36
-
37
- # Sets the `policy_group_ids`
38
- # @note it preserves the original order
39
- # @param value [Array<String>] the policy group ids to be set.
40
- def policy_group_ids=(value)
41
- set_uniq_array_keep_order("policy_group_ids", value)
42
- end
43
-
44
- # @return [Array<String>] the policy group ids of this user.
45
- def policy_group_ids
46
- doc["policy_group_ids"] ||= []
47
- end
48
-
49
- # Sets the `login_provider_ids`
50
- def login_provider_ids=(value)
51
- set_uniq_array_keep_order("login_provider_ids", value)
52
- end
53
-
54
- # @return [Array<String>] the login provider ids of this user.
55
- def login_provider_ids
56
- doc["login_provider_ids"] ||= []
57
- end
58
-
59
- # Sets the `starred_ids`
60
- def starred_ids=(value)
61
- set_uniq_array_keep_order("starred_ids", value)
62
- end
63
-
64
- # @return [Array<String>] the starred page ids of this user.
65
- def starred_ids
66
- doc["starred_ids"] ||= []
67
- end
68
-
69
- # It preserves the values of keys that are not defined in `value`.
70
- # @param value [Hash] the abilities that you want to update.
71
- def permissions_custom=(value)
72
- doc["permissions_custom"] ||= {}
73
- doc["permissions_custom"].merge!(value)
74
- end
75
-
76
- # It preserves the values of keys that are not defined in `value`.
77
- # @param value [Hash] the preferences that you want to update.
78
- def preferences=(value)
79
- doc["preferences"] ||= {}
80
- doc["preferences"].merge!(value)
81
- end
82
-
83
- def as_json
84
- super.tap do |hash|
85
- hash["permissions_custom"] = permissions.as_json
86
- hash["permissions_merged"] = perms_merged.as_json
87
- hash["preferences"] = preferences.as_json
88
- end
89
- end
90
-
91
- def as_update(ref = :last, ignore: [])
92
- super(ref, ignore: ignore | ["user_id", "permissions_merged", "prefilter"])
93
- end
94
-
95
- end
96
- end
97
- end
98
- end
99
- require 'ecoportal/api/internal/permissions'
100
- require 'ecoportal/api/internal/preferences'
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ class Account < Common::BaseModel
5
+ PROPERTIES = [
6
+ "user_id", "policy_group_ids", "default_tag", "prefilter",
7
+ "permissions_custom", "permissions_merged", "preferences",
8
+ "login_provider_ids", "starred_ids", "landing_page_id",
9
+ "accept_eula", "send_invites", "force_send_invites"
10
+ ]
11
+ passthrough *PROPERTIES.map(&:to_sym)
12
+
13
+ class_resolver :preferences_class, "Ecoportal::API::Internal::Preferences"
14
+ class_resolver :permissions_class, "Ecoportal::API::Internal::Permissions"
15
+
16
+ embeds_one :permissions, key: "permissions_custom", klass: :permissions_class
17
+ embeds_one :perms_merged, key: "permissions_merged", klass: :permissions_class
18
+ embeds_one :preferences, klass: :preferences_class
19
+
20
+ # Sets the `default_tag` of the user
21
+ # @note it upcases the value
22
+ # @param value [String, nil] the tag
23
+ # @return [String, nil] the value set in `default_tag`
24
+ def default_tag=(value)
25
+ unless !value || value.is_a?(String)
26
+ raise ArgumentError.new("default_tag= needs to be passed a String or nil, got #{value.class}")
27
+ end
28
+ if value
29
+ unless value.match(Ecoportal::API::V1::Person::VALID_TAG_REGEX)
30
+ raise ArgumentError.new("Invalid default tag #{value.inspect}")
31
+ end
32
+ value = value.upcase
33
+ end
34
+ doc["default_tag"] = value
35
+ end
36
+
37
+ # Sets the `policy_group_ids`
38
+ # @note it preserves the original order
39
+ # @param value [Array<String>] the policy group ids to be set.
40
+ def policy_group_ids=(value)
41
+ set_uniq_array_keep_order("policy_group_ids", value)
42
+ end
43
+
44
+ # @return [Array<String>] the policy group ids of this user.
45
+ def policy_group_ids
46
+ doc["policy_group_ids"] ||= []
47
+ end
48
+
49
+ # Sets the `login_provider_ids`
50
+ def login_provider_ids=(value)
51
+ set_uniq_array_keep_order("login_provider_ids", value)
52
+ end
53
+
54
+ # @return [Array<String>] the login provider ids of this user.
55
+ def login_provider_ids
56
+ doc["login_provider_ids"] ||= []
57
+ end
58
+
59
+ # Sets the `starred_ids`
60
+ def starred_ids=(value)
61
+ set_uniq_array_keep_order("starred_ids", value)
62
+ end
63
+
64
+ # @return [Array<String>] the starred page ids of this user.
65
+ def starred_ids
66
+ doc["starred_ids"] ||= []
67
+ end
68
+
69
+ # It preserves the values of keys that are not defined in `value`.
70
+ # @param value [Hash] the abilities that you want to update.
71
+ def permissions_custom=(value)
72
+ doc["permissions_custom"] ||= {}
73
+ doc["permissions_custom"].merge!(value)
74
+ end
75
+
76
+ # It preserves the values of keys that are not defined in `value`.
77
+ # @param value [Hash] the preferences that you want to update.
78
+ def preferences=(value)
79
+ doc["preferences"] ||= {}
80
+ doc["preferences"].merge!(value)
81
+ end
82
+
83
+ def as_json
84
+ super.tap do |hash|
85
+ hash["permissions_custom"] = permissions.as_json
86
+ hash["permissions_merged"] = perms_merged.as_json
87
+ hash["preferences"] = preferences.as_json
88
+ end
89
+ end
90
+
91
+ def as_update(ref = :last, ignore: [])
92
+ super(ref, ignore: ignore | ["user_id", "permissions_merged", "prefilter"])
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+ require 'ecoportal/api/internal/permissions'
99
+ require 'ecoportal/api/internal/preferences'
@@ -1,9 +1,9 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- class LoginProvider < Common::BaseModel
5
- passthrough :id, :name, :type, :enabled_for
6
- end
7
- end
8
- end
9
- end
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ class LoginProvider < Common::BaseModel
5
+ passthrough :id, :name, :type, :enabled_for
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,33 +1,33 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- # @attr_reader client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
5
- class LoginProviders
6
- include Enumerable
7
-
8
- attr_reader :client
9
-
10
- # @param client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
11
- # @return [LoginProviders] an instance object ready to make login providers api requests.
12
- def initialize(client)
13
- @client = client
14
- end
15
-
16
- # Gets all the login providers via api request.
17
- # @return [Enumerable<LoginProvider>] an `Enumerable` with all login providers already wrapped as `LoginProvider` objects.
18
- def get_all
19
- response = @client.get("/login_providers")
20
- Common::WrappedResponse.new(response, Internal::LoginProvider)
21
- end
22
-
23
- def each(&block)
24
- return to_enum(:each) unless block
25
- get_all.each(&block)
26
- end
27
-
28
- end
29
- end
30
- end
31
- end
32
-
33
- require 'ecoportal/api/internal/login_provider'
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ # @attr_reader client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
5
+ class LoginProviders
6
+ include Enumerable
7
+
8
+ attr_reader :client
9
+
10
+ # @param client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
11
+ # @return [LoginProviders] an instance object ready to make login providers api requests.
12
+ def initialize(client)
13
+ @client = client
14
+ end
15
+
16
+ # Gets all the login providers via api request.
17
+ # @return [Enumerable<LoginProvider>] an `Enumerable` with all login providers already wrapped as `LoginProvider` objects.
18
+ def get_all
19
+ response = @client.get("/login_providers")
20
+ Common::WrappedResponse.new(response, Internal::LoginProvider)
21
+ end
22
+
23
+ def each(&block)
24
+ return to_enum(:each) unless block
25
+ get_all.each(&block)
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ require 'ecoportal/api/internal/login_provider'
@@ -1,14 +1,14 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- class People < V1::People
5
- class_resolver :person_class, "Ecoportal::API::Internal::Person"
6
- end
7
- end
8
- end
9
- end
10
-
11
- require 'ecoportal/api/internal/schema_field_value'
12
- require 'ecoportal/api/internal/person_details'
13
- require 'ecoportal/api/internal/account'
14
- require 'ecoportal/api/internal/person'
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ class People < V1::People
5
+ class_resolver :person_class, "Ecoportal::API::Internal::Person"
6
+ end
7
+ end
8
+ end
9
+ end
10
+
11
+ require 'ecoportal/api/internal/schema_field_value'
12
+ require 'ecoportal/api/internal/person_details'
13
+ require 'ecoportal/api/internal/account'
14
+ require 'ecoportal/api/internal/person'
@@ -1,13 +1,14 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- class Permissions < Common::BaseModel
5
- passthrough :files, :data, :reports
6
- passthrough :organization, :pages, :page_editor, :registers, :tasks
7
- passthrough :person_core, :person_core_create, :person_core_edit
8
- passthrough :person_details, :person_account, :person_abilities
9
- passthrough :visitor_management, :broadcast_notifications, :cross_register_reporting
10
- end
11
- end
12
- end
13
- end
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ class Permissions < Common::BaseModel
5
+ passthrough :files, :data, :reports
6
+ passthrough :organization, :pages, :page_editor, :registers, :tasks
7
+ passthrough :person_core, :person_core_create, :person_core_edit
8
+ passthrough :person_details, :person_account, :person_abilities
9
+ passthrough :visitor_management, :contractor_management
10
+ passthrough :broadcast_notifications, :cross_register_reporting
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,53 +1,101 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- # @attr account [Account, nil] the account of the person or `nil` if missing.
5
- class Person < V1::Person
6
- class_resolver :person_details_class, "Ecoportal::API::Internal::PersonDetails"
7
- class_resolver :person_account_class, "Ecoportal::API::Internal::Account"
8
- embeds_one :account, nullable: true, klass: :person_account_class
9
-
10
- def as_json
11
- super.update("account" => account&.as_json)
12
- end
13
-
14
- def as_update(ref = :last, ignore: [])
15
- super(ref, ignore: ignore | ["user_id", "permissions_merged", "prefilter"])
16
- end
17
-
18
- # Sets the Account to the person, depending on the paramter received:
19
- # - `nil`: blanks the account.
20
- # - `Account`: sets a copy of the object param as account.
21
- # - `Hash`: slices the properties of `Account` (keeping the value of `user_id` if there was already account).
22
- # @note this method does not make dirty the account (meaning that `as_json` will be an empty hash `{}`)
23
- # @param value [nil, Account, Hash] value to be set.
24
- # @return [nil, Account] the resulting `Account` set to the person.
25
- def account=(value)
26
- case value
27
- when NilClass
28
- doc["account"] = nil
29
- when Internal::Account
30
- doc["account"] = JSON.parse(value.to_json)
31
- when Hash
32
- user_id = account.user_id if account
33
- doc["account"] = value.slice(*Internal::Account::PROPERTIES)
34
- doc["account"]["user_id"] = user_id if user_id
35
- else
36
- # TODO
37
- raise "Invalid set on account: Need nil, Account or Hash; got #{value.class}"
38
- end
39
- remove_instance_variable("@account") if defined?(@account)
40
- return account
41
- end
42
-
43
- # Adds an empty account to the person.
44
- # @note if the person exists, and does not have an account, an this will send an invite.
45
- # @note this will **not** change the account properties of this person.
46
- def add_account
47
- self.account = {}
48
- end
49
-
50
- end
51
- end
52
- end
53
- end
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ # @attr account [Account, nil] the account of the person or `nil` if missing.
5
+ class Person < V1::Person
6
+ class_resolver :person_details_class, "Ecoportal::API::Internal::PersonDetails"
7
+ class_resolver :person_account_class, "Ecoportal::API::Internal::Account"
8
+ embeds_one :account, nullable: true, klass: :person_account_class
9
+
10
+ def initialize(doc = {}, *args, **kargs, &block)
11
+ super(doc, *args, **kargs, &block)
12
+ @is_new = @prev_is_new = no_account_nor_details?(@doc)
13
+ end
14
+
15
+ def consolidate!
16
+ @prev_is_new = @is_new
17
+ @is_new = false
18
+ super
19
+ end
20
+
21
+ def reset!(*args)
22
+ @is_new = @prev_is_new
23
+ super(*args)
24
+ end
25
+
26
+ # @note
27
+ # - `original_doc` should technically hold the model as it is on **server side**
28
+ # - Once this person has been successfullyupdated, `#consolidate!` should be called.
29
+ # - The above sets a copy of `doc` as `original_doc` (meaning: _no pending changes_)
30
+ # - Therefore we can safely assume that this is a **new record** if the `original_doc`
31
+ # does not have details nor account (as all people should have either to exist).
32
+ # - **However**, to the purpose of getting a clean `as_update`, `original_doc` is filled
33
+ # with `details` right on creation. For this reason, a workaround is necessary via `@is_new`
34
+ # @return [Boolean] whether or not this entry is being created now (i.e. non existent on server)
35
+ def new?(value = :original)
36
+ return @is_new if value == :original
37
+ no_account_nor_details?(initial_doc)
38
+ end
39
+
40
+ # @return [Boolean] if the account has been added to `doc`
41
+ def account_added?(value = :original)
42
+ ref_doc = (value == :original) ? original_doc : initial_doc
43
+ !!account && !ref_doc["account"]
44
+ end
45
+
46
+ # @return [Boolean] if the account has been removed from `doc`
47
+ def account_removed?(value = :original)
48
+ ref_doc = (value == :original) ? original_doc : initial_doc
49
+ !account && !!ref_doc["account"]
50
+ end
51
+
52
+ def as_json
53
+ super.update("account" => account&.as_json)
54
+ end
55
+
56
+ def as_update(ref = :last, ignore: [])
57
+ super(ref, ignore: ignore | ["user_id", "permissions_merged", "prefilter"])
58
+ end
59
+
60
+ # Sets the Account to the person, depending on the paramter received:
61
+ # - `nil`: blanks the account.
62
+ # - `Account`: sets a copy of the object param as account.
63
+ # - `Hash`: slices the properties of `Account` (keeping the value of `user_id` if there was already account).
64
+ # @note this method does not make dirty the account (meaning that `as_json` will be an empty hash `{}`)
65
+ # @param value [nil, Account, Hash] value to be set.
66
+ # @return [nil, Account] the resulting `Account` set to the person.
67
+ def account=(value)
68
+ case value
69
+ when NilClass
70
+ doc["account"] = nil
71
+ when Internal::Account
72
+ doc["account"] = JSON.parse(value.to_json)
73
+ when Hash
74
+ user_id = account.user_id if account
75
+ doc["account"] = value.slice(*Internal::Account::PROPERTIES)
76
+ doc["account"]["user_id"] = user_id if user_id
77
+ else
78
+ # TODO
79
+ raise "Invalid set on account: Need nil, Account or Hash; got #{value.class}"
80
+ end
81
+ remove_instance_variable("@account") if defined?(@account)
82
+ return account
83
+ end
84
+
85
+ # Adds an empty account to the person.
86
+ # @note if the person exists, and does not have an account, an this will send an invite.
87
+ # @note this will **not** change the account properties of this person.
88
+ def add_account
89
+ self.account = {}
90
+ end
91
+
92
+ private
93
+
94
+ def no_account_nor_details?(value = @doc)
95
+ return true unless value.is_a?(Hash)
96
+ !value.key?("details") && !value.key?("account")
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -1,9 +1,9 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- class PersonDetails < V1::PersonDetails
5
- class_resolver :schema_field_value_class, "Ecoportal::API::Internal::SchemaFieldValue"
6
- end
7
- end
8
- end
9
- end
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ class PersonDetails < V1::PersonDetails
5
+ class_resolver :schema_field_value_class, "Ecoportal::API::Internal::SchemaFieldValue"
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,10 +1,10 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- class PersonSchema < V1::PersonSchema
5
- class_resolver :schema_field_class, "Ecoportal::API::Internal::SchemaField"
6
- end
7
- end
8
- end
9
- end
10
- require 'ecoportal/api/internal/schema_field'
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ class PersonSchema < V1::PersonSchema
5
+ class_resolver :schema_field_class, "Ecoportal::API::Internal::SchemaField"
6
+ end
7
+ end
8
+ end
9
+ end
10
+ require 'ecoportal/api/internal/schema_field'
@@ -1,11 +1,11 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- class PersonSchemas < V1::PersonSchemas
5
- class_resolver :person_schema_class, "Ecoportal::API::Internal::PersonSchema"
6
- end
7
- end
8
- end
9
- end
10
-
11
- require 'ecoportal/api/internal/person_schema'
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ class PersonSchemas < V1::PersonSchemas
5
+ class_resolver :person_schema_class, "Ecoportal::API::Internal::PersonSchema"
6
+ end
7
+ end
8
+ end
9
+ end
10
+
11
+ require 'ecoportal/api/internal/person_schema'
@@ -1,9 +1,9 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- class PolicyGroup < Common::BaseModel
5
- passthrough :id, :name
6
- end
7
- end
8
- end
9
- end
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ class PolicyGroup < Common::BaseModel
5
+ passthrough :id, :name
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,32 +1,32 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- # @attr_reader client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
5
- class PolicyGroups
6
- include Enumerable
7
-
8
- attr_reader :client
9
-
10
- # @param client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
11
- # @return [PolicyGroups] an instance object ready to make policy groups api requests.
12
- def initialize(client)
13
- @client = client
14
- end
15
-
16
- # Gets all the policy groups via api request.
17
- # @return [Enumerable<PolicyGroup>] an `Enumerable` with all the policy groups already wrapped as `PolicyGroup` objects.
18
- def get_all
19
- response = client.get("/policy_groups")
20
- Common::WrappedResponse.new(response, Internal::PolicyGroup)
21
- end
22
-
23
- def each(&block)
24
- return to_enum(:each) unless block
25
- get_all.each(&block)
26
- end
27
- end
28
- end
29
- end
30
- end
31
-
32
- require 'ecoportal/api/internal/policy_group'
1
+ module Ecoportal
2
+ module API
3
+ class Internal
4
+ # @attr_reader client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
5
+ class PolicyGroups
6
+ include Enumerable
7
+
8
+ attr_reader :client
9
+
10
+ # @param client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
11
+ # @return [PolicyGroups] an instance object ready to make policy groups api requests.
12
+ def initialize(client)
13
+ @client = client
14
+ end
15
+
16
+ # Gets all the policy groups via api request.
17
+ # @return [Enumerable<PolicyGroup>] an `Enumerable` with all the policy groups already wrapped as `PolicyGroup` objects.
18
+ def get_all
19
+ response = client.get("/policy_groups")
20
+ Common::WrappedResponse.new(response, Internal::PolicyGroup)
21
+ end
22
+
23
+ def each(&block)
24
+ return to_enum(:each) unless block
25
+ get_all.each(&block)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ require 'ecoportal/api/internal/policy_group'