mirror of
https://github.com/hkalexling/Mango.git
synced 2026-03-17 00:03:36 -04:00
48 lines
1.3 KiB
Crystal
48 lines
1.3 KiB
Crystal
require "kemal"
|
|
require "./context"
|
|
require "./handlers/*"
|
|
require "./util"
|
|
require "./routes/*"
|
|
|
|
class Server
|
|
def initialize(@context : Context)
|
|
error 403 do |env|
|
|
message = "HTTP 403: You are not authorized to visit #{env.request.path}"
|
|
layout "message"
|
|
end
|
|
error 404 do |env|
|
|
message = "HTTP 404: Mango cannot find the page #{env.request.path}"
|
|
layout "message"
|
|
end
|
|
error 500 do |env|
|
|
message = "HTTP 500: Internal server error. Please try again later."
|
|
layout "message"
|
|
end
|
|
|
|
MainRouter.new(@context).setup
|
|
AdminRouter.new(@context).setup
|
|
ReaderRouter.new(@context).setup
|
|
APIRouter.new(@context).setup
|
|
|
|
Kemal.config.logging = false
|
|
add_handler LogHandler.new @context.logger
|
|
add_handler AuthHandler.new @context.storage
|
|
add_handler UploadHandler.new @context.config.upload_path
|
|
{% if flag?(:release) %}
|
|
# when building for relase, embed the static files in binary
|
|
@context.debug "We are in release mode. Using embedded static files."
|
|
serve_static false
|
|
add_handler StaticHandler.new
|
|
{% end %}
|
|
end
|
|
|
|
def start
|
|
@context.debug "Starting Kemal server"
|
|
{% if flag?(:release) %}
|
|
Kemal.config.env = "production"
|
|
{% end %}
|
|
Kemal.config.port = @context.config.port
|
|
Kemal.run
|
|
end
|
|
end
|