mirror of
https://github.com/derfenix/webarchive.git
synced 2026-03-11 12:41:54 +03:00
42 lines
769 B
Go
42 lines
769 B
Go
package rest
|
|
|
|
import (
|
|
"io/fs"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/derfenix/webarchive/config"
|
|
"github.com/derfenix/webarchive/ui"
|
|
)
|
|
|
|
func NewUI(cfg config.UI) *UI {
|
|
return &UI{
|
|
prefix: cfg.Prefix,
|
|
theme: cfg.Theme,
|
|
}
|
|
}
|
|
|
|
type UI struct {
|
|
prefix string
|
|
theme string
|
|
}
|
|
|
|
func (u *UI) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
serveRoot, err := fs.Sub(ui.StaticFiles, u.theme)
|
|
if err != nil {
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
if strings.HasPrefix(r.URL.Path, u.prefix) {
|
|
r.URL.Path = "/" + strings.TrimPrefix(r.URL.Path, u.prefix)
|
|
}
|
|
if !strings.HasPrefix(r.URL.Path, "/static") {
|
|
r.URL.Path = "/"
|
|
}
|
|
|
|
r.URL.Path = strings.TrimPrefix(r.URL.Path, "/static")
|
|
|
|
http.FileServer(http.FS(serveRoot)).ServeHTTP(w, r)
|
|
}
|