kemal/src/kemal/config.cr

59 lines
1.1 KiB
Crystal
Raw Normal View History

2015-10-23 18:33:26 +00:00
module Kemal
2014-07-30 22:17:53 +00:00
class Config
INSTANCE = Config.new
2015-11-12 20:48:22 +00:00
HANDLERS = [] of HTTP::Handler
2016-02-12 12:11:21 +00:00
property host_binding, ssl, port, env, public_folder, logging
2014-07-30 22:17:53 +00:00
def initialize
2016-01-03 14:04:11 +00:00
@host_binding = "0.0.0.0" unless @host_binding
2014-07-30 22:17:53 +00:00
@port = 3000
2015-11-18 20:45:49 +00:00
@env = "development" unless @env
2015-12-12 18:27:46 +00:00
@public_folder = "./public"
2016-01-17 11:08:12 +00:00
@logging = true
2016-02-12 12:11:21 +00:00
@logger = nil
2014-07-30 22:17:53 +00:00
end
2016-02-12 12:11:21 +00:00
def logger
@logger.not_nil!
2014-07-30 22:17:53 +00:00
end
2015-11-12 20:48:22 +00:00
2016-02-12 12:11:21 +00:00
def logger=(logger : Kemal::BaseLogHandler)
@logger = logger
2015-11-12 20:48:22 +00:00
end
2016-02-12 12:11:21 +00:00
def scheme
ssl ? "https" : "http"
2016-01-17 12:17:27 +00:00
end
2016-02-12 12:11:21 +00:00
def handlers
HANDLERS
2016-01-17 12:17:27 +00:00
end
2015-11-12 20:48:22 +00:00
def add_handler(handler : HTTP::Handler)
HANDLERS << handler
end
2015-12-12 18:27:46 +00:00
2015-12-15 21:11:21 +00:00
def add_ws_handler(handler : HTTP::WebSocketHandler)
HANDLERS << handler
end
2016-02-12 12:11:21 +00:00
def setup_logging
if @logging
@logger = Kemal::CommonLogHandler.new(@env)
HANDLERS << @logger.not_nil!
elsif @logging == false
@logger = Kemal::NullLogHandler.new(@env)
HANDLERS << @logger.not_nil!
end
end
2014-07-30 22:17:53 +00:00
end
def self.config
yield Config::INSTANCE
end
def self.config
Config::INSTANCE
end
end