45 lines
924 B
Crystal
45 lines
924 B
Crystal
require "./controllers/**"
|
|
|
|
require "kemal"
|
|
|
|
add_handler App::Middlewares::CORSHandler.new
|
|
add_handler App::Middlewares::Auth.new
|
|
|
|
module App
|
|
get "/:slug", &App::Controllers::ClickController.redirect_handler
|
|
|
|
# Namespace /api
|
|
get "/api/ping" do |env|
|
|
Controllers::PingController.new(env).ping
|
|
end
|
|
|
|
get "/api/links" do |env|
|
|
Controllers::LinkController.new(env).list_all
|
|
end
|
|
|
|
get "/api/links/:id" do |env|
|
|
Controllers::LinkController.new(env).get
|
|
end
|
|
|
|
get "/api/links/:id/clicks" do |env|
|
|
Controllers::LinkController.new(env).list_clicks
|
|
end
|
|
|
|
post "/api/links" do |env|
|
|
Controllers::LinkController.new(env).create
|
|
end
|
|
|
|
put "/api/links/:id" do |env|
|
|
Controllers::LinkController.new(env).update
|
|
end
|
|
|
|
delete "/api/links/:id" do |env|
|
|
Controllers::LinkController.new(env).delete
|
|
end
|
|
|
|
error 500 do |env|
|
|
App::InternalServerErrorException.new(env)
|
|
""
|
|
end
|
|
end
|