Module: Philiprehberger::HeaderKit::Cors

Defined in:
lib/philiprehberger/header_kit/cors.rb

Class Method Summary collapse

Class Method Details

.build(origin:, methods: ['GET'], headers: [], max_age: nil, credentials: false, expose: []) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/philiprehberger/header_kit/cors.rb', line 17

def build(origin:, methods: ['GET'], headers: [], max_age: nil, credentials: false, expose: [])
  result = {}
  result['Access-Control-Allow-Origin'] = origin
  result['Access-Control-Allow-Methods'] = Array(methods).join(', ')
  result['Access-Control-Allow-Headers'] = Array(headers).join(', ') unless headers.empty?
  result['Access-Control-Max-Age'] = max_age.to_s if max_age
  result['Access-Control-Allow-Credentials'] = 'true' if credentials
  result['Access-Control-Expose-Headers'] = Array(expose).join(', ') unless expose.empty?
  result
end

.parse(headers) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/philiprehberger/header_kit/cors.rb', line 8

def parse(headers)
  result = {}
  result[:origin] = headers['Origin'] || headers['origin']
  result[:method] = headers['Access-Control-Request-Method'] || headers['access-control-request-method']
  request_headers = headers['Access-Control-Request-Headers'] || headers['access-control-request-headers']
  result[:headers] = request_headers&.split(',')&.map(&:strip) || []
  result
end