class Reifier::Response

Attributes

body[RW]
headers[RW]
protocol[RW]
status[RW]

Public Class Methods

new(socket) click to toggle source
# File lib/reifier/response.rb, line 5
def initialize(socket)
  @socket   = socket
  @response = ''
end

Public Instance Methods

<<(rack_return) click to toggle source
# File lib/reifier/response.rb, line 19
def <<(rack_return)
  @status  = rack_return[0]
  @headers = rack_return[1]
  @body    = rack_return[2]
end
handle() click to toggle source
# File lib/reifier/response.rb, line 10
def handle
  handle_request_line
  handle_headers
  handle_body

  @socket.write @response
  @socket.close
end

Private Instance Methods

handle_body() click to toggle source
# File lib/reifier/response.rb, line 39
def handle_body
  @body.each do |chunk|
    @response << chunk
  end

  @response << CRLF
ensure
  @body.close if @body.respond_to? :close
end
handle_headers() click to toggle source
# File lib/reifier/response.rb, line 31
def handle_headers
  @headers.each do |k, v|
    @response << "#{k}: #{v}" + CRLF
  end
  @response << 'Connection: close' + CRLF
  @response << CRLF
end
handle_request_line() click to toggle source
# File lib/reifier/response.rb, line 27
def handle_request_line
  @response << "#{@protocol} #{@status} #{HTTP_STATUS_CODES[@status]}" + CRLF
end