Module: Chase::Server
- Includes:
- HttpParser
- Defined in:
- lib/chase/server.rb
Overview
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
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_response ⇒ Object
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
|
#request ⇒ Object
19
20
21
|
# File 'lib/chase/server.rb', line 19
def request
@request ||= Request.new
end
|
#response ⇒ Object
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
|