Sha256: 892d651cfb6a1bd515eac6bdf44b019042ae33b6eea8761fa3d8b77ae6c45f46

Contents?: true

Size: 1.37 KB

Versions: 12

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true
require 'drillbit/configuration'
require 'drillbit/requests/base'
require 'drillbit/accept_header'
require 'drillbit/tokens/json_web_token'
require 'drillbit/tokens/base64'

module  Drillbit
module  Requests
class   Rack < Base
  ACCEPT_PARAM_PATTERN         = /(?:\A|&)accept=(.+?)(?=\z|&)/
  BASE64_TOKEN_PARAM_PATTERN   = /(?:\A|&)#{BASE64_TOKEN_PARAM_NAME}=(.*)(?=\z|&)/
  JSON_WEB_TOKEN_PARAM_PATTERN = /(?:\A|&)#{JSON_WEB_TOKEN_PARAM_NAME}=(.*)(?=\z|&)/

  def authorization_token_from_params
    case request['QUERY_STRING']
    when JSON_WEB_TOKEN_PARAM_PATTERN
      Tokens::JsonWebToken.__send__(
        "from_#{Drillbit.configuration.token_type.downcase}",
        request['QUERY_STRING'][JSON_WEB_TOKEN_PARAM_PATTERN, 1] || '',
        private_key: token_private_key,
      )
    when BASE64_TOKEN_PARAM_PATTERN
      base64_token = request['QUERY_STRING'][BASE64_TOKEN_PARAM_PATTERN, 1]

      Tokens::Base64.convert(raw_token: base64_token)
    else
      Tokens::Null.instance
    end
  end

  private

  def raw_accept_header_from_header
    request['HTTP_ACCEPT']
  end

  def raw_accept_header_from_params
    URI.unescape(request['QUERY_STRING'][ACCEPT_PARAM_PATTERN, 1] || '')
  end

  def raw_authorization_header
    request['HTTP_AUTHORIZATION'] || ''
  end

  def raw_request_application_name
    request['HTTP_X_APPLICATION_NAME']
  end
end
end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
drillbit-2.11.0 lib/drillbit/requests/rack.rb
drillbit-2.10.0 lib/drillbit/requests/rack.rb
drillbit-2.4.0 lib/drillbit/requests/rack.rb
drillbit-2.3.1 lib/drillbit/requests/rack.rb
drillbit-2.3.0 lib/drillbit/requests/rack.rb
drillbit-2.2.2 lib/drillbit/requests/rack.rb
drillbit-2.2.1 lib/drillbit/requests/rack.rb
drillbit-2.2.0 lib/drillbit/requests/rack.rb
drillbit-2.1.0 lib/drillbit/requests/rack.rb
drillbit-2.0.1 lib/drillbit/requests/rack.rb
drillbit-2.0.0 lib/drillbit/requests/rack.rb
drillbit-1.1.0 lib/drillbit/requests/rack.rb