Class: Eco::API::Organization::PresetsFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/eco/api/organization/presets_factory.rb

Constant Summary collapse

ABILITIES =
File.join(__dir__, 'presets_values.json')
DEFAULT_CUSTOM =
'presets_custom.json'
DEFAULT_MAP =
'presets_map.json'

Instance Method Summary collapse

Constructor Details

#initialize(presets_custom: DEFAULT_CUSTOM, presets_map: DEFAULT_MAP, enviro: nil, policy_groups: nil) ⇒ PresetsFactory

Returns a new instance of PresetsFactory.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/eco/api/organization/presets_factory.rb', line 10

def initialize(presets_custom: DEFAULT_CUSTOM, presets_map: DEFAULT_MAP, enviro: nil, policy_groups: nil)
  @abilities  = JSON.load(File.open(ABILITIES))
  @habilities = @abilities.map do |key, values|
    h_values = values.map { |v| [v, true] }.to_h
    [key, h_values]
  end.to_h

  fatal("Expecting Environment object. Given: #{enviro}") if enviro && !enviro.is_a?(Eco::API::Common::Session::Environment)
  @enviro = enviro

  policy_groups = policy_groups || @enviro&.api&.policy_groups.to_a
  if policy_groups.is_a?(Eco::API::Organization::PolicyGroups)
    @policy_groups = policy_groups
  else
    @policy_groups = Eco::API::Organization::PolicyGroups.new(policy_groups)
  end

  init_custom(presets_custom)
  init_map(presets_map)
end

Instance Method Details

#keysArray<String>

Returns all the abilities.

Returns:

  • (Array<String>)

    all the abilities



46
47
48
# File 'lib/eco/api/organization/presets_factory.rb', line 46

def keys
  @abilities.keys
end

#new(*policy_group_ids_or_names) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/eco/api/organization/presets_factory.rb', line 31

def new(*policy_group_ids_or_names)

  names = policy_group_ids_or_names.map do |id_name|
    @policy_groups.to_name(id_name)&.downcase
  end.compact

  if @presets_map
    preset_names = names.map { |name| @presets_map.fetch(name, nil) }
  else # option to do not use preset mapping (so just the policy group name)
    preset_names = names
  end
  compile(*preset_names)
end