Fix filesystem error handler

This commit is contained in:
2026-04-01 19:39:42 +02:00
parent f578f2c2c0
commit 373bf5c786
3 changed files with 25 additions and 20 deletions

View File

@@ -1,11 +1,13 @@
package webcontroller
import (
"errors"
"fmt"
"net/http"
"strings"
"fornaxian.tech/log"
"fornaxian.tech/pixeldrain_api_client/pixelapi"
"fornaxian.tech/util"
"github.com/julienschmidt/httprouter"
)
@@ -25,16 +27,19 @@ func (wc *WebController) serveDirectory(w http.ResponseWriter, r *http.Request,
node, err := td.PixelAPI.GetFilesystemPath(path)
if err != nil {
if err.Error() == "not_found" || err.Error() == "path_not_found" {
if apiErr, ok := errors.AsType[pixelapi.Error](err); ok {
switch apiErr.StatusCode {
case "not_found", "path_not_found":
wc.serveNotFound(w, r)
} else if err.Error() == "forbidden" {
case "forbidden":
wc.serveForbidden(w, r)
} else if err.Error() == "authentication_required" {
case "authentication_required":
http.Redirect(w, r, "/login", http.StatusSeeOther)
} else if err.Error() == "unavailable_for_legal_reasons" {
case "unavailable_for_legal_reasons":
wc.serveUnavailableForLegalReasons(w, r)
} else if err.Error() == "permission_denied" {
case "permission_denied":
wc.serveForbidden(w, r)
}
} else {
log.Error("Failed to get path: %s", err)
wc.templates.Run(w, r, "500", td)

View File

@@ -262,7 +262,7 @@ func (s styleSheet) String() string {
s.BodyBackground.CSS(),
s.BodyText.CSS(),
s.Separator.CSS(),
s.BodyColor.WithAlpha(0.7).CSS(), // shaded_background
s.BodyColor.WithAlpha(0.9).CSS(), // shaded_background
s.CardColor.CSS(),
s.Chart1.CSS(),
s.Chart2.CSS(),

View File

@@ -33,7 +33,7 @@ type TemplateData struct {
Title string
OGData ogData
Other interface{}
Other any
URLQuery url.Values
}
@@ -232,15 +232,15 @@ func (tm *TemplateManager) pageNr(s string) (nr int) {
}
return nr
}
func (tm *TemplateManager) add(a, b interface{}) float64 { return toFloat(a) + toFloat(b) }
func (tm *TemplateManager) sub(a, b interface{}) float64 { return toFloat(a) - toFloat(b) }
func (tm *TemplateManager) mul(a, b interface{}) float64 { return toFloat(a) * toFloat(b) }
func (tm *TemplateManager) div(a, b interface{}) float64 { return toFloat(a) / toFloat(b) }
func (tm *TemplateManager) add(a, b any) float64 { return toFloat(a) + toFloat(b) }
func (tm *TemplateManager) sub(a, b any) float64 { return toFloat(a) - toFloat(b) }
func (tm *TemplateManager) mul(a, b any) float64 { return toFloat(a) * toFloat(b) }
func (tm *TemplateManager) div(a, b any) float64 { return toFloat(a) / toFloat(b) }
func (tm *TemplateManager) formatData(i interface{}) string {
func (tm *TemplateManager) formatData(i any) string {
return util.FormatData(detectInt(i))
}
func (tm *TemplateManager) formatDataBits(i interface{}) string {
func (tm *TemplateManager) formatDataBits(i any) string {
var size = detectInt(i) * 8
var sizef = float64(size)
@@ -302,7 +302,7 @@ func (tm *TemplateManager) noEscape(t string) template.HTML { return template.HT
func (tm *TemplateManager) noEscapeJS(t string) template.JS { return template.JS(t) }
func (tm *TemplateManager) slashes() template.HTML { return template.HTML("//") }
func detectInt(i interface{}) int {
func detectInt(i any) int {
switch v := i.(type) {
case int:
return int(v)
@@ -332,7 +332,7 @@ func detectInt(i interface{}) int {
panic(fmt.Sprintf("%v is not an int", i))
}
func toFloat(i interface{}) float64 {
func toFloat(i any) float64 {
switch v := i.(type) {
case int:
return float64(v)