Sha256: a6129de8cbaf1f4cd17ce1847e5a18eabf7c881740dafa079f60f0f215a05859

Contents?: true

Size: 664 Bytes

Versions: 1

Compression:

Stored size: 664 Bytes

Contents

# frozen_string_literal: true

module Rack
  module BearerAuth
    class Request
      # https://tools.ietf.org/html/rfc6750#section-2.1
      # b64token    = 1*( ALPHA / DIGIT /
      #                   "-" / "." / "_" / "~" / "+" / "/" ) *"="
      # credentials = "Bearer" 1*SP b64token
      BEARER_TOKEN_REGEXP = %r{\ABearer +([A-Za-z0-9\-._~+/]+=*)\z}.freeze

      attr_reader :path, :via, :token

      def initialize(env)
        @path = env["PATH_INFO"]
        @via = env["REQUEST_METHOD"].downcase.to_sym

        authz = env["HTTP_AUTHORIZATION"]
        @token = Regexp.last_match(1) if authz&.match(BEARER_TOKEN_REGEXP)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-bearer_auth-1.0.0 lib/rack/bearer_auth/request.rb