diff options
Diffstat (limited to 'lib/gitem/server.rb')
| -rw-r--r-- | lib/gitem/server.rb | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/lib/gitem/server.rb b/lib/gitem/server.rb index c73ff56..82edc90 100644 --- a/lib/gitem/server.rb +++ b/lib/gitem/server.rb @@ -14,9 +14,30 @@ module Gitem puts "🌐 Server running at #{@url}" puts " Press Ctrl+C to stop\n\n" server = WEBrick::HTTPServer.new( - Port: @port, DocumentRoot: @root, - Logger: WEBrick::Log.new($stderr, WEBrick::Log::WARN), AccessLog: [] + Port: @port, + Logger: WEBrick::Log.new($stderr, WEBrick::Log::WARN), + AccessLog: [] ) + + server.mount_proc '/' do |req, res| + path = File.join(@root, req.path) + path = File.join(path, 'index.html') if File.directory?(path) + + if File.exist?(path) && !File.directory?(path) + res.body = File.read(path) + res.content_type = WEBrick::HTTPUtils.mime_type(path, WEBrick::HTTPUtils::DefaultMimeTypes) + else + index_path = File.join(@root, 'index.html') + if File.exist?(index_path) + res.body = File.read(index_path) + res.content_type = 'text/html' + else + res.status = 404 + res.body = 'Not Found' + end + end + end + trap("INT") { server.shutdown } trap("TERM") { server.shutdown } server.start |
