diff --git a/lib/skeksis.rb b/lib/skeksis.rb
index c92a15b..38e37e4 100644
--- a/lib/skeksis.rb
+++ b/lib/skeksis.rb
@@ -8,6 +8,19 @@ require_relative "skeksis/htmlize"
module Skeksis
#class Error < StandardError; end
+ Header = <<~HTML
+
+
+ Gembridge
+
+
+ Directory Listing
+ HTML
+
+ Footer = <<~HTML
+
+
+ HTML
class GemBridge
def initialize
@@ -16,7 +29,8 @@ module Skeksis
def query(path, env)
if Dir.exist?(path)
- return Dir.each_child(path).map {|i| "#{i}\n"}
+ #return Dir.each_child(path).map {|i| "#{i}\n"}
+ return create_dir_listing(path, env)
elsif File.exist?(path)
file = File.open(path, 'r')
data = file.readlines
@@ -29,5 +43,18 @@ module Skeksis
def htmlize(data, env)
Skeksis::Parser.parse(data, strip_blanks=true).htmlize(env['REQUEST_URI'], @gemini_uri)
end
+
+ private
+
+ def create_dir_listing(path, env)
+ http = URI.parse(env['REQUEST_URI'])
+
+ listing = Dir.each_child(path).map do |i|
+ path = Pathname.new(env['PATH_INFO']).join(i)
+ uri = URI::HTTP.build(host: http.host, port: http.port, path: path.to_s)
+ "#{i}
"
+ end.join("\n")
+ [Header + listing + Footer]
+ end
end
end