Sha256: 78843202322dfe0acbe5b451b54e9dadf65ea44ce4ab5102c16aff3c208c03dd

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

module Http
  class Request
    # Method is given as a lowercase symbol e.g. :get, :post
    attr_reader :method

    # "Request URI" as per RFC 2616
    # http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html
    attr_reader :uri
    attr_reader :headers, :body, :version

    # :nodoc:
    def initialize(method, uri, headers = {}, body = nil, version = "1.1")
      @method = method.to_s.downcase.to_sym
      raise UnsupportedMethodError, "unknown method: #{method}" unless METHODS.include? @method

      @uri = uri.is_a?(URI) ? uri : URI(uri.to_s)

      @headers = {}
      headers.each do |name, value|
        name = name.to_s
        key = name[CANONICAL_HEADER]
        key ||= Http.canonicalize_header(name)
        @headers[key] = value
      end

      @body, @version = body, version
    end

    # Obtain the given header
    def [](header)
      @headers[Http.canonicalize_header(header)]
    end

    # Create a Net::HTTP request from this request
    def to_net_http_request
      request_class = Net::HTTP.const_get(@method.to_s.capitalize)
      request = request_class.new(@uri.request_uri, @headers)
      request.body = @body
      request
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
http-0.2.0 lib/http/request.rb