Module: Chase::Server

Includes:
HttpParser
Defined in:
lib/chase/server.rb

Overview

HTTP Server Module

Constant Summary

Constants included from HttpParser

HttpParser::MAPPED_HEADERS, HttpParser::VALID_METHODS

Instance Method Summary collapse

Methods included from HttpParser

#http_method, #http_parser, #set_env

Instance Method Details

#parse_request(data) ⇒ Object

Raises:



32
33
34
35
# File 'lib/chase/server.rb', line 32

def parse_request(data)
  http_parser << data
  raise ServerError unless request.env['HTTP_METHOD']
end

#prepare_responseObject



37
38
39
40
# File 'lib/chase/server.rb', line 37

def prepare_response
  response.on(:flushed) { close_connection_after_writing }
  response.on(:send) { |data| send_data(data) }
end

#receive_data(data) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/chase/server.rb', line 11

def receive_data(data)
  parse_request data
  prepare_response
  handle
rescue ServerError, HTTP::Parser::Error
  send_error('400 Bad Request')
end

#requestObject



19
20
21
# File 'lib/chase/server.rb', line 19

def request
  @request ||= Request.new
end

#responseObject



23
24
25
# File 'lib/chase/server.rb', line 23

def response
  @response ||= Response.new
end

#send_error(status_code) ⇒ Object



27
28
29
30
# File 'lib/chase/server.rb', line 27

def send_error(status_code)
  send_data "HTTP/1.1 #{status_code}\r\nConnection: close\r\nContent-Type: text/plain\r\n"
  close_connection_after_writing
end