diff options
-rw-r--r-- | example/Caddyfile | 36 | ||||
-rw-r--r-- | example/static/gemtext/cheatsheet.gmi (renamed from example/static/cheatsheet.gmi) | 0 | ||||
-rw-r--r-- | example/static/gemtext/index.gmi | 5 | ||||
-rw-r--r-- | example/static/index.html | 9 | ||||
-rw-r--r-- | example/tpl/render_gemtext.html | 7 |
5 files changed, 41 insertions, 16 deletions
diff --git a/example/Caddyfile b/example/Caddyfile index aa12136..8d9dd50 100644 --- a/example/Caddyfile +++ b/example/Caddyfile @@ -8,22 +8,36 @@ http://template.localhost { root example/static - # If the path exists in the static directory then serve it directly - @static file {path} {path}/ - route @static { - file_server - } + # If a directory has an index.gmi file, then that file will be served when + # the directory is requested. + try_files {path} {path}/index.gmi + + @gmi path_regexp \.gmi$ + + # Handle all requests for .gmi files specially. + route @gmi { - # Otherwise send it through the template, which will look for a matching gmi - # file to render. - route { - rewrite * /tpl/render_gemtext.html - root example templates { + # The templates directive is given a different root, so that other + # template snippets within the tpl directory could theoretically be + # used within render_gemtext.html. + root example + + # Include the gemtext extention to make the gemtext function + # available within the template. extensions { gemtext } } - file_server + + # We "respond" with a template body here, which will be processed by the + # templates directive above. This body simply imports the template we + # actually want. Setting Content-Type is required because there's no + # actual file for Caddy to determine the value from. + header Content-Type text/html + respond `{{ include "tpl/render_gemtext.html" }}` } + + # All other files are handled directly by the file_server. + file_server } diff --git a/example/static/cheatsheet.gmi b/example/static/gemtext/cheatsheet.gmi index e7c9286..e7c9286 100644 --- a/example/static/cheatsheet.gmi +++ b/example/static/gemtext/cheatsheet.gmi diff --git a/example/static/gemtext/index.gmi b/example/static/gemtext/index.gmi new file mode 100644 index 0000000..9ff3d82 --- /dev/null +++ b/example/static/gemtext/index.gmi @@ -0,0 +1,5 @@ +# Gemtext Directory Index + +This is the index of the gemtext directory. In here are various gemtext files useful for testing. + +=> cheatsheet.gmi Gemtext cheatsheet diff --git a/example/static/index.html b/example/static/index.html index db924d5..7badec1 100644 --- a/example/static/index.html +++ b/example/static/index.html @@ -1,11 +1,18 @@ <html> <head> <title>Root Index</title> + <link rel="stylesheet" type="text/css" href="/bamboo.css" /> </head> <body> <h1>Root Index</h1> <p> - This is the root page of the example site. + This is the root page of the example site. From here you can explore the + various files useful for testing and exploring the functionality of the + plugins in this project. </p> + <ul> + <li><a href="gemtext/">Gemtext files</a></li> + <li><a href="empty/">An empty directory, should 404</a></li> + </ul> </body> </html> diff --git a/example/tpl/render_gemtext.html b/example/tpl/render_gemtext.html index 0cfdec6..34a8c7c 100644 --- a/example/tpl/render_gemtext.html +++ b/example/tpl/render_gemtext.html @@ -1,7 +1,6 @@ -{{ $pathSplit := splitList "/" .OriginalReq.URL.Path }} -{{ $base := last $pathSplit | default "index.html" }} -{{ $newBase := trimSuffix (ext $base) $base | printf "%s.gmi" }} -{{ $filePath := append (initial $pathSplit) $newBase | join "/" | printf "static%s" }} +{{ $pathSplit := splitList "/" .Req.URL.Path }} +{{ $base := last $pathSplit | default "index.gmi" }} +{{ $filePath := append (initial $pathSplit) $base | join "/" | printf "static%s" }} {{ if not (fileExists $filePath) }}{{ httpError 404 }}{{ end }} <!DOCTYPE html> <html> |