57 lines
No EOL
1.4 KiB
Ruby
57 lines
No EOL
1.4 KiB
Ruby
require 'socket'
|
|
require_relative 'request'
|
|
require_relative 'route'
|
|
|
|
class HTTPServer
|
|
|
|
def initialize(port)
|
|
@port = port
|
|
end
|
|
|
|
def start
|
|
server = TCPServer.new(@port)
|
|
puts "Listening on #{@port}"
|
|
|
|
router = Router.new
|
|
router.add_route("GET",/\/grillkorv\/\d/) do |id, senap|
|
|
puts "woot #{senap}"
|
|
end
|
|
router.add_route("GET","/favicon.ico")
|
|
|
|
while session = server.accept
|
|
data = ""
|
|
while line = session.gets and line !~ /^\s*$/
|
|
data += line
|
|
end
|
|
puts "RECEIVED REQUEST"
|
|
puts "-" * 40
|
|
puts data
|
|
puts "-" * 40
|
|
|
|
request = Request.new(data)
|
|
pp request
|
|
|
|
routeReturn = router.match_route(request)
|
|
if routeReturn == 200
|
|
html = "<h1>Hello, World!</h1>"
|
|
status = 200
|
|
elsif routeReturn == 404
|
|
html = "<h1>Not found!</h1>"
|
|
status = 404
|
|
end
|
|
|
|
|
|
|
|
#Sen kolla om resursen (filen finns)
|
|
|
|
|
|
# Nedanstående bör göras i er Response-klass
|
|
|
|
session.print "HTTP/1.1 #{status}\r\n"
|
|
session.print "Content-Type: text/html\r\n"
|
|
session.print "\r\n"
|
|
session.print html
|
|
session.close
|
|
end
|
|
end
|
|
end |