class WabSarvar::Request

Attributes

body[R]
headers[R]
method[R]
params[R]
path[R]
version[R]

Public Class Methods

new(request = "") click to toggle source
# File lib/wab_sarvar/request.rb, line 7
def initialize(request = "")
  parse(request)
end

Public Instance Methods

add_body(line) click to toggle source
# File lib/wab_sarvar/request.rb, line 33
def add_body(line)
  @body += line
end
add_header(header, value) click to toggle source
# File lib/wab_sarvar/request.rb, line 37
def add_header(header, value)
  header = normalize(header)
  @headers[header] = value
end
normalize(header) click to toggle source
# File lib/wab_sarvar/request.rb, line 42
def normalize(header)
  header.gsub(":", "").downcase.to_sym
end
parse(request) click to toggle source
# File lib/wab_sarvar/request.rb, line 11
def parse(request)
  @method, @path, @version = request.lines[0].split

  @headers = {}
  @body = ''

  query_string = @path.split('?')[1].to_s
  @params = CGI::parse(query_string)

  mode = :headers
  request.lines[1..-1].each do |line|
    next mode = :body if line == "\r\n"

    if mode == :headers
      header, value = line.split
      add_header(header, value)
    else
      add_body(line)
    end
  end
end