class YaPPL::Policy

Attributes

id[R]
rules[R]

Public Class Methods

from_policy_file(json) click to toggle source
# File lib/policy.rb, line 10
def self.from_policy_file(json)
  Parser.parse(json)
end
new(id, rules) click to toggle source
# File lib/policy.rb, line 5
def initialize(id, rules)
  @id = id
  @rules = rules
end

Public Instance Methods

active_rules() click to toggle source
# File lib/policy.rb, line 82
def active_rules
  rules.select { |rule| rule.id != -1 && !rule.expired? }
end
add_rule(rule) click to toggle source
# 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) click to toggle source
# File lib/policy.rb, line 48
def archive_rule(rule_id)
  rule = rule_by_id(rule_id)
  rule.archive!
end
archived_rules() click to toggle source
# File lib/policy.rb, line 78
def archived_rules
  rules.select { |rule| rule.id == -1 }
end
create_policy() click to toggle source
# File lib/policy.rb, line 14
def create_policy
  to_json
end
get_excluded_purpose() click to toggle source
# File lib/policy.rb, line 18
def get_excluded_purpose
  rules.map(&:excluded_purposes).flatten.uniq
end
get_excluded_utilizer() click to toggle source
# File lib/policy.rb, line 22
def get_excluded_utilizer
  rules.map(&:excluded_utilizers).flatten.uniq
end
get_tr_rules() click to toggle source
# File lib/policy.rb, line 36
def get_tr_rules # rename?
  active_rules.map do |rule|
    {
      permitted_purposes: rule.permitted_purposes,
      excluded_purposes: rule.excluded_purposes,
      permitted_utilizers: rule.permitted_utilizers,
      excluded_utilizers: rule.excluded_utilizers,
      transformations: rule.transformations
    }
  end
end
new_rule(args) click to toggle source
# File lib/policy.rb, line 26
def new_rule(args)
  add_rule Rule.new(args)
end
rule_by_id(id) click to toggle source
# File lib/policy.rb, line 69
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_json() click to toggle source
# File lib/policy.rb, line 60
def to_json
  preferences = @rules.map { |rule| { rule: rule.to_h } }

  {
    id: @id,
    preference: preferences
  }.to_json
end
update_rule(id, args) click to toggle source
# File lib/policy.rb, line 53
def update_rule(id, args)
  archive_rule(id)
  rule = Rule.new(args)
  rule.id = id
  rules << rule
end