Sha256: 96fa9f8b25f4d91d61c7e3b2a6cab620da03389afb353c8b7864de3187648040

Contents?: true

Size: 758 Bytes

Versions: 5

Compression:

Stored size: 758 Bytes

Contents

module Knod
  class Request
    attr_reader :socket, :headers, :request_line

    def initialize(socket)
      @socket = socket
      @request_line = socket.gets
      parse_request
    end

    def parse_request
      headers = {}
      loop do
        line = socket.gets
        break if line == "\r\n"
        name, value = line.strip.split(": ")
        headers[name] = value
      end
      @headers = headers
    end

    def content_length
      headers["Content-Length"].to_i
    end

    def content_type
      headers["Content-Type"]
    end

    def uri
      @uri ||= request_line.split[1]
    end

    def method
      @verb ||= request_line.split.first.upcase
    end

    def body
      @body ||= socket.read(content_length)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
knod-0.6.2 lib/knod/request.rb
knod-0.6.1 lib/knod/request.rb
knod-0.4.4 lib/knod/request.rb
knod-0.4.3 lib/knod/request.rb
knod-0.5.2 lib/knod/request.rb