class Apiphobic::Requests::AuthorizationToken

Constants

BASE64_PATTERN
BASE64_TOKEN_HEADER_PATTERN
BASE64_TOKEN_PARAM_NAME
BASE64_TOKEN_PARAM_PATTERN
JSON_WEB_TOKEN_HEADER_PATTERN
JSON_WEB_TOKEN_PARAM_NAME
JSON_WEB_TOKEN_PARAM_PATTERN
JSON_WEB_TOKEN_PATTERN

Attributes

private_key[RW]
request[RW]
type[RW]

Public Class Methods

new(request, private_key:, type:) click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 26
def initialize(request,
               private_key:,
               type:)

  self.request     = request
  self.private_key = private_key
  self.type        = type
end

Public Instance Methods

fetch() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 35
def fetch
  if !token_from_header.blank? && token_from_params.blank?
    token_from_header
  elsif !token_from_params.blank?
    token_from_params
  else
    token_from_header
  end
end

Private Instance Methods

base64_token_from_header() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 71
def base64_token_from_header
  raw_authorization_header[BASE64_TOKEN_HEADER_PATTERN, 1]
end
base64_token_from_params() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 75
def base64_token_from_params
  if request.respond_to?(:params)
    request.params[BASE64_TOKEN_PARAM_NAME] || ''
  else
    request['QUERY_STRING'][BASE64_TOKEN_PARAM_PATTERN, 1] || ''
  end
end
header_contains_base64_token?() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 95
def header_contains_base64_token?
  raw_authorization_header =~ BASE64_TOKEN_HEADER_PATTERN
end
header_contains_json_web_token?() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 99
def header_contains_json_web_token?
  raw_authorization_header =~ JSON_WEB_TOKEN_HEADER_PATTERN
end
json_web_token_from_header() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 83
def json_web_token_from_header
  raw_authorization_header[JSON_WEB_TOKEN_HEADER_PATTERN, 1]
end
json_web_token_from_params() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 87
def json_web_token_from_params
  if request.respond_to?(:params)
    request.params[JSON_WEB_TOKEN_PARAM_NAME] || ''
  else
    request['QUERY_STRING'][JSON_WEB_TOKEN_PARAM_PATTERN, 1] || ''
  end
end
params_contains_base64_token?() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 103
def params_contains_base64_token?
  if request.respond_to?(:params)
    request.params.has_key?(BASE64_TOKEN_PARAM_NAME)
  else
    request['QUERY_STRING'] =~ BASE64_TOKEN_PARAM_PATTERN
  end
end
params_contains_json_web_token?() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 111
def params_contains_json_web_token?
  if request.respond_to?(:params)
    request.params.has_key?(JSON_WEB_TOKEN_PARAM_NAME)
  else
    request['QUERY_STRING'] =~ JSON_WEB_TOKEN_PARAM_PATTERN
  end
end
raw_authorization_header() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 119
def raw_authorization_header
  if request.respond_to?(:headers)
    request.headers['HTTP_AUTHORIZATION'] || ''
  else
    request['HTTP_AUTHORIZATION'] || ''
  end
end
retrieve_token(token) click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 127
def retrieve_token(token)
  Tokens::JsonWebToken.__send__(
    "from_#{type.downcase}",
    token,
    private_key: private_key,
  )
end
token_from_header() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 47
def token_from_header
  @token_from_header ||= if header_contains_json_web_token?
                           retrieve_token(json_web_token_from_header)
                         elsif header_contains_base64_token?
                           Tokens::Base64.convert(raw_token: base64_token_from_header)
                         else
                           Tokens::Null.instance
                         end
rescue Erratum::Errors::InvalidToken
  Tokens::Invalid.instance
end
token_from_params() click to toggle source
# File lib/apiphobic/requests/authorization_token.rb, line 59
def token_from_params
  @token_from_params ||= if params_contains_json_web_token?
                           retrieve_token(json_web_token_from_params)
                         elsif params_contains_base64_token?
                           Tokens::Base64.convert(raw_token: base64_token_from_params)
                         else
                           Tokens::Null.instance
                         end
rescue Erratum::Errors::InvalidToken
  Tokens::Invalid.instance
end