Module: CSPUtil

Defined in:
lib/csp_util/errors.rb,
lib/csp_util/version.rb,
lib/csp_util/directive.rb,
lib/csp_util/directives.rb

Defined Under Namespace

Classes: CSPUtilError, Directive, DirectiveError, DirectiveNameDeprecated, DirectiveNameUnknown, DuplicateDirective

Constant Summary collapse

VERSION =
'1.2.0'

Class Method Summary collapse

Class Method Details

.add_to_directives(directives, directive) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/csp_util/directives.rb', line 9

def add_to_directives(directives, directive)
  # add value to existing directive
  directives.each do |d|
    if d.same_name?(directive)
      d.add_value(directive.value)
      return directives
    end
  end

  # or add directive
  return directives << directive
end

.delete_from_directives(directives, directive) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/csp_util/directives.rb', line 22

def delete_from_directives(directives, directive)
  directives.each do |d|
    if d.same_name?(directive)
      d.value = d.value - directive.value 
      break
    end
  end
  
  directives.reject! do |d|
    d.value.size == 0
  end

  return directives
end

.join_directives(directives) ⇒ Object



5
6
7
# File 'lib/csp_util/directives.rb', line 5

def join_directives(directives)
  directives.map(&:to_s).join('; ')
end

.parse_directives(serialized_policy) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/csp_util/directives.rb', line 37

def parse_directives(serialized_policy)
  tokens = serialized_policy.split(';')
  tokens.each_with_object([]) do |token, directives|
    token.strip!
    next if token.empty?

    directive = Directive.new
    directive.parse!(token)
    validate_uniqueness!(directive, directives)

    directives << directive
  end
end