Class: SecureHeaders::ClearSiteData

Inherits:
Object
  • Object
show all
Defined in:
lib/secure_headers/headers/clear_site_data.rb

Constant Summary collapse

HEADER_NAME =
"Clear-Site-Data".freeze
TYPES =
"types".freeze
CACHE =

Valid ‘types`

"cache".freeze
COOKIES =
"cookies".freeze
STORAGE =
"storage".freeze
EXECTION_CONTEXTS =
"executionContexts".freeze
ALL_TYPES =
[CACHE, COOKIES, STORAGE, EXECTION_CONTEXTS]
CONFIG_KEY =
:clear_site_data

Class Method Summary collapse

Class Method Details

.make_header(config = nil) ⇒ Object

Public: make an Clear-Site-Data header name, value pair

Returns nil if not configured, returns header name and value if configured.



20
21
22
23
24
25
26
27
28
29
# File 'lib/secure_headers/headers/clear_site_data.rb', line 20

def make_header(config=nil)
  case config
  when nil, OPT_OUT, []
    # noop
  when Array
    [HEADER_NAME, JSON.dump(TYPES => config)]
  when true
    [HEADER_NAME, JSON.dump(TYPES => ALL_TYPES)]
  end
end

.validate_config!(config) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/secure_headers/headers/clear_site_data.rb', line 31

def validate_config!(config)
  case config
  when nil, OPT_OUT, true
    # valid
  when Array
    unless config.all? { |t| t.is_a?(String) }
      raise ClearSiteDataConfigError.new("types must be Strings")
    end

    begin
      JSON.dump(config)
    rescue JSON::GeneratorError, Encoding::UndefinedConversionError
      raise ClearSiteDataConfigError.new("types must serializable by JSON")
    end
  else
    raise ClearSiteDataConfigError.new("config must be an Array of Strings or `true`")
  end
end