From 17a15f5c52f88aa44499ac267330e5635f6051b5 Mon Sep 17 00:00:00 2001 From: Paul Duncan Date: Sat, 5 Mar 2016 19:12:01 -0500 Subject: refactor server --- src/guff/server.cr | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/guff/server.cr (limited to 'src/guff/server.cr') diff --git a/src/guff/server.cr b/src/guff/server.cr new file mode 100644 index 0000000..794045a --- /dev/null +++ b/src/guff/server.cr @@ -0,0 +1,42 @@ +require "http/server" +require "./config" +require "./model" +require "./blog-handler" + +module Guff + class Server + def self.run(model : Model, config : Config) + new(model, config).run + end + + def initialize(@model : Model, @config : Config) + # create server + @server = HTTP::Server.new( + config["host"], + config["port"].to_i, + get_handlers(model, config) + ) do |context| + context.response.puts "asdf" + end + end + + def run + puts "listening on %s:%s" % %w{host port}.map { |k| @config[k] } + @server.listen + end + + private def get_handlers( + model : Model, + config : Config + ) : Array(HTTP::Handler) + @handlers ||= [ + HTTP::ErrorHandler.new, + HTTP::LogHandler.new, + HTTP::DeflateHandler.new, + BlogHandler.new(model, config), + SlugHandler.new(model, config), + HTTP::StaticFileHandler.new(config["public"]), + ] + end + end +end -- cgit v1.2.3