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