Module: Philiprehberger::HeaderKit::Authorization

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

Overview

Parses Authorization headers for Bearer, Basic, and Digest schemes.

Constant Summary collapse

DIGEST_PARAM_PATTERN =
%r{(\w+)=(?:"([^"]*)"|([\w+/=]+))}

Class Method Summary collapse

Class Method Details

.parse(header) ⇒ Hash

Parse an Authorization header string.

Parameters:

  • header (String)

    the Authorization header value

Returns:

  • (Hash)

    with :scheme and :credentials (Bearer/Basic) or :params (Digest)



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/philiprehberger/header_kit/authorization.rb', line 13

def self.parse(header)
  return { scheme: nil, credentials: nil } if header.nil? || header.strip.empty?

  stripped = header.strip
  space_index = stripped.index(' ')

  unless space_index
    return { scheme: stripped, credentials: nil }
  end

  scheme = stripped[0...space_index]
  rest = stripped[(space_index + 1)..].strip

  case scheme.downcase
  when 'bearer', 'basic'
    { scheme: scheme, credentials: rest }
  when 'digest'
    { scheme: scheme, params: parse_digest_params(rest) }
  else
    { scheme: scheme, credentials: rest }
  end
end