mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-02 19:05:32 -04:00
31 lines
680 B
Crystal
31 lines
680 B
Crystal
require "baked_file_system"
|
|
require "kemal"
|
|
require "../util/*"
|
|
|
|
class FS
|
|
extend BakedFileSystem
|
|
{% if flag?(:release) %}
|
|
{% if read_file? "#{__DIR__}/../../dist/favicon.ico" %}
|
|
{% puts "baking ../../dist" %}
|
|
bake_folder "../../dist"
|
|
{% else %}
|
|
{% puts "baking ../../public" %}
|
|
bake_folder "../../public"
|
|
{% end %}
|
|
{% end %}
|
|
end
|
|
|
|
class StaticHandler < Kemal::Handler
|
|
def call(env)
|
|
if requesting_static_file env
|
|
file = FS.get? env.request.path
|
|
return call_next env if file.nil?
|
|
|
|
slice = Bytes.new file.size
|
|
file.read slice
|
|
return send_file env, slice, file.mime_type
|
|
end
|
|
call_next env
|
|
end
|
|
end
|