Class: YaPPL::Policy

Inherits:
Object
  • Object
show all
Defined in:
lib/policy.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, rules) ⇒ Policy

Returns a new instance of Policy.



5
6
7
8
# File 'lib/policy.rb', line 5

def initialize(id, rules)
  @id = id
  @rules = rules
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



3
4
5
# File 'lib/policy.rb', line 3

def id
  @id
end

#rulesObject (readonly)

Returns the value of attribute rules.



3
4
5
# File 'lib/policy.rb', line 3

def rules
  @rules
end

Class Method Details

.from_policy_file(json) ⇒ Object



10
11
12
# File 'lib/policy.rb', line 10

def self.from_policy_file(json)
  Parser.parse(json)
end

Instance Method Details

#active_rulesObject



80
81
82
# File 'lib/policy.rb', line 80

def active_rules
  rules.select { |rule| rule.id != -1 && !rule.expired? }
end

#add_rule(rule) ⇒ Object



30
31
32
33
34
# File 'lib/policy.rb', line 30

def add_rule(rule)
  max_id = rules.map(&:id).max
  rule.id = max_id + 1
  rules << rule
end

#archive_rule(rule_id) ⇒ Object



46
47
48
49
# File 'lib/policy.rb', line 46

def archive_rule(rule_id)
  rule = rule_by_id(rule_id)
  rule.archive!
end

#archived_rulesObject



76
77
78
# File 'lib/policy.rb', line 76

def archived_rules
  rules.select { |rule| rule.id == -1 }
end

#create_policyObject



14
15
16
# File 'lib/policy.rb', line 14

def create_policy
  to_json
end

#get_excluded_purposeObject



18
19
20
# File 'lib/policy.rb', line 18

def get_excluded_purpose
  rules.map(&:excluded_purposes).flatten.uniq
end

#get_excluded_utilizerObject



22
23
24
# File 'lib/policy.rb', line 22

def get_excluded_utilizer
  rules.map(&:excluded_utilizers).flatten.uniq
end

#get_tr_rulesObject

rename?



36
37
38
39
40
41
42
43
44
# File 'lib/policy.rb', line 36

def get_tr_rules # rename?
  active_rules.map do |rule|
    {
      permitted_purposes: rule.permitted_purposes,
      permitted_utilizers: rule.permitted_utilizers,
      transformations: rule.transformations
    }
  end
end

#new_rule(args) ⇒ Object



26
27
28
# File 'lib/policy.rb', line 26

def new_rule(args)
  add_rule Rule.new(args)
end

#rule_by_id(id) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/policy.rb', line 67

def rule_by_id(id)
  matching_rules = rules.select { |rule| rule.id == id }
  if matching_rules.count == 1
    matching_rules.first
  else
    matching_rules
  end
end

#to_jsonObject



58
59
60
61
62
63
64
65
# File 'lib/policy.rb', line 58

def to_json
  preferences = @rules.map { |rule| { rule: rule.to_h } }

  {
    id: @id,
    preference: preferences
  }.to_json
end

#update_rule(id, args) ⇒ Object



51
52
53
54
55
56
# File 'lib/policy.rb', line 51

def update_rule(id, args)
  archive_rule(id)
  rule = Rule.new(args)
  rule.id = id
  rules << rule
end