summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/labstack/echo/middleware/static.go
diff options
context:
space:
mode:
authorDuco van Amstel <helcaraxan@gmail.com>2018-11-18 17:55:05 +0000
committerWim <wim@42.be>2018-11-25 21:21:04 +0100
commit09875fe1603307080f3a4172985c5dca3bd9912d (patch)
treea23220772f6f6597d509ca71b2df3480a77b8076 /vendor/github.com/labstack/echo/middleware/static.go
parentf716b8fc0ff90f47b61e218ef34019b38bd70e0d (diff)
downloadmatterbridge-msglm-09875fe1603307080f3a4172985c5dca3bd9912d.tar.gz
matterbridge-msglm-09875fe1603307080f3a4172985c5dca3bd9912d.tar.bz2
matterbridge-msglm-09875fe1603307080f3a4172985c5dca3bd9912d.zip
Update direct dependencies where possible
Diffstat (limited to 'vendor/github.com/labstack/echo/middleware/static.go')
-rw-r--r--vendor/github.com/labstack/echo/middleware/static.go119
1 files changed, 99 insertions, 20 deletions
diff --git a/vendor/github.com/labstack/echo/middleware/static.go b/vendor/github.com/labstack/echo/middleware/static.go
index 7208c3a2..55485f34 100644
--- a/vendor/github.com/labstack/echo/middleware/static.go
+++ b/vendor/github.com/labstack/echo/middleware/static.go
@@ -2,13 +2,16 @@ package middleware
import (
"fmt"
+ "html/template"
"net/http"
+ "net/url"
"os"
"path"
"path/filepath"
"strings"
"github.com/labstack/echo"
+ "github.com/labstack/gommon/bytes"
)
type (
@@ -36,6 +39,78 @@ type (
}
)
+const html = `
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
+ <title>{{ .Name }}</title>
+ <style>
+ body {
+ font-family: Menlo, Consolas, monospace;
+ padding: 48px;
+ }
+ header {
+ padding: 4px 16px;
+ font-size: 24px;
+ }
+ ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 20px 0 0 0;
+ display: flex;
+ flex-wrap: wrap;
+ }
+ li {
+ width: 300px;
+ padding: 16px;
+ }
+ li a {
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ text-decoration: none;
+ transition: opacity 0.25s;
+ }
+ li span {
+ color: #707070;
+ font-size: 12px;
+ }
+ li a:hover {
+ opacity: 0.50;
+ }
+ .dir {
+ color: #E91E63;
+ }
+ .file {
+ color: #673AB7;
+ }
+ </style>
+</head>
+<body>
+ <header>
+ {{ .Name }}
+ </header>
+ <ul>
+ {{ range .Files }}
+ <li>
+ {{ if .Dir }}
+ {{ $name := print .Name "/" }}
+ <a class="dir" href="{{ $name }}">{{ $name }}</a>
+ {{ else }}
+ <a class="file" href="{{ .Name }}">{{ .Name }}</a>
+ <span>{{ .Size }}</span>
+ {{ end }}
+ </li>
+ {{ end }}
+ </ul>
+</body>
+</html>
+`
+
var (
// DefaultStaticConfig is the default Static middleware config.
DefaultStaticConfig = StaticConfig{
@@ -66,6 +141,12 @@ func StaticWithConfig(config StaticConfig) echo.MiddlewareFunc {
config.Index = DefaultStaticConfig.Index
}
+ // Index template
+ t, err := template.New("index").Parse(html)
+ if err != nil {
+ panic(fmt.Sprintf("echo: %v", err))
+ }
+
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) (err error) {
if config.Skipper(c) {
@@ -76,7 +157,7 @@ func StaticWithConfig(config StaticConfig) echo.MiddlewareFunc {
if strings.HasSuffix(c.Path(), "*") { // When serving from a group, e.g. `/static*`.
p = c.Param("*")
}
- p, err = echo.PathUnescape(p)
+ p, err = url.PathUnescape(p)
if err != nil {
return
}
@@ -103,7 +184,7 @@ func StaticWithConfig(config StaticConfig) echo.MiddlewareFunc {
if err != nil {
if config.Browse {
- return listDir(name, c.Response())
+ return listDir(t, name, c.Response())
}
if os.IsNotExist(err) {
return next(c)
@@ -119,32 +200,30 @@ func StaticWithConfig(config StaticConfig) echo.MiddlewareFunc {
}
}
-func listDir(name string, res *echo.Response) (err error) {
- dir, err := os.Open(name)
+func listDir(t *template.Template, name string, res *echo.Response) (err error) {
+ file, err := os.Open(name)
if err != nil {
return
}
- dirs, err := dir.Readdir(-1)
+ files, err := file.Readdir(-1)
if err != nil {
return
}
- // Create a directory index
+ // Create directory index
res.Header().Set(echo.HeaderContentType, echo.MIMETextHTMLCharsetUTF8)
- if _, err = fmt.Fprintf(res, "<pre>\n"); err != nil {
- return
+ data := struct {
+ Name string
+ Files []interface{}
+ }{
+ Name: name,
}
- for _, d := range dirs {
- name := d.Name()
- color := "#212121"
- if d.IsDir() {
- color = "#e91e63"
- name += "/"
- }
- if _, err = fmt.Fprintf(res, "<a href=\"%s\" style=\"color: %s;\">%s</a>\n", name, color, name); err != nil {
- return
- }
+ for _, f := range files {
+ data.Files = append(data.Files, struct {
+ Name string
+ Dir bool
+ Size string
+ }{f.Name(), f.IsDir(), bytes.Format(f.Size())})
}
- _, err = fmt.Fprintf(res, "</pre>\n")
- return
+ return t.Execute(res, data)
}