Files
res-downloader/core/middleware.go
2025-09-13 22:25:14 +08:00

72 lines
1.9 KiB
Go

package core
import (
"net/http"
"strings"
)
func Middleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if HandleApi(w, r) {
return
}
next.ServeHTTP(w, r)
})
}
func HandleApi(w http.ResponseWriter, r *http.Request) bool {
if strings.HasPrefix(r.URL.Path, "/api") {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
if r.Method == http.MethodOptions {
w.WriteHeader(http.StatusNoContent)
return true
}
switch r.URL.Path {
case "/api/install":
httpServerOnce.install(w, r)
case "/api/set-system-password":
httpServerOnce.setSystemPassword(w, r)
case "/api/preview":
httpServerOnce.preview(w, r)
case "/api/proxy-open":
httpServerOnce.openSystemProxy(w, r)
case "/api/proxy-unset":
httpServerOnce.unsetSystemProxy(w, r)
case "/api/open-directory":
httpServerOnce.openDirectoryDialog(w, r)
case "/api/open-file":
httpServerOnce.openFileDialog(w, r)
case "/api/open-folder":
httpServerOnce.openFolder(w, r)
case "/api/is-proxy":
httpServerOnce.isProxy(w, r)
case "/api/app-info":
httpServerOnce.appInfo(w, r)
case "/api/set-config":
httpServerOnce.setConfig(w, r)
case "/api/get-config":
httpServerOnce.getConfig(w, r)
case "/api/set-type":
httpServerOnce.setType(w, r)
case "/api/clear":
httpServerOnce.clear(w, r)
case "/api/delete":
httpServerOnce.delete(w, r)
case "/api/download":
httpServerOnce.download(w, r)
case "/api/cancel":
httpServerOnce.cancel(w, r)
case "/api/wx-file-decode":
httpServerOnce.wxFileDecode(w, r)
case "/api/batch-export":
httpServerOnce.batchExport(w, r)
case "/api/cert":
httpServerOnce.downCert(w, r)
}
return true
}
return false
}