Sha256: 76c681e2037c5500c0c076d58cf197a2034ef5041aeccc186393ee2ad4583bfd

Contents?: true

Size: 1023 Bytes

Versions: 5

Compression:

Stored size: 1023 Bytes

Contents

# frozen_string_literal: true

class Rage::Request
  # @private
  def initialize(env)
    @env = env
  end

  # Get the request headers.
  # @example
  #   request.headers["Content-Type"] # => "application/json"
  #   request.headers["Connection"] # => "keep-alive"
  def headers
    @headers ||= Headers.new(@env)
  end

  # @private
  class Headers
    HTTP = "HTTP_"

    def initialize(env)
      @env = env
    end

    def [](requested_header)
      if requested_header.start_with?(HTTP)
        @env[requested_header]
      else
        (requested_header = requested_header.tr("-", "_")).upcase!

        if "CONTENT_TYPE" == requested_header || "CONTENT_LENGTH" == requested_header
          @env[requested_header]
        else
          @env["#{HTTP}#{requested_header}"]
        end
      end
    end

    def inspect
      headers = @env.select { |k| k == "CONTENT_TYPE" || k == "CONTENT_LENGTH" || k.start_with?(HTTP) }
      "#<#{self.class.name} @headers=#{headers.inspect}"
    end
  end # class Headers
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rage-rb-0.6.0 lib/rage/request.rb
rage-rb-0.5.2 lib/rage/request.rb
rage-rb-0.5.1 lib/rage/request.rb
rage-rb-0.5.0 lib/rage/request.rb
rage-rb-0.4.0 lib/rage/request.rb