72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
package web
|
|
|
|
import (
|
|
"io/fs"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/gofiber/fiber/v3"
|
|
"github.com/gofiber/utils/v2"
|
|
)
|
|
|
|
func (s *WebServer) routeGetVersion(c fiber.Ctx) error {
|
|
files := []string{}
|
|
error := filepath.WalkDir(config.Path, func(path string, d fs.DirEntry, err error) error {
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if d.IsDir() {
|
|
return nil
|
|
}
|
|
|
|
if strings.HasPrefix(path, filepath.Join(config.Path, ".git/")) {
|
|
return nil
|
|
}
|
|
|
|
if strings.HasPrefix(path, filepath.Join(config.Path, "boot/")) {
|
|
return nil
|
|
}
|
|
|
|
if strings.ToLower(path) == strings.ToLower(filepath.Join(config.Path, "README.md")) {
|
|
return nil
|
|
}
|
|
|
|
if strings.ToLower(path) == strings.ToLower(filepath.Join(config.Path, "main.js")) {
|
|
return nil
|
|
}
|
|
|
|
if strings.ToLower(path) == strings.ToLower(filepath.Join(config.Path, "project.json")) {
|
|
return nil
|
|
}
|
|
|
|
if path == config.Path {
|
|
return nil
|
|
}
|
|
|
|
files = append(files, strings.Replace(path, config.Path+"/", "", -1))
|
|
return nil
|
|
})
|
|
if error != nil {
|
|
return error
|
|
}
|
|
|
|
files = append(files, "version.txt")
|
|
return c.JSON(map[string]interface{}{
|
|
"version": config.Version,
|
|
"files": files,
|
|
})
|
|
}
|
|
|
|
func (s *WebServer) routeGetVersionFile(c fiber.Ctx) error {
|
|
file := c.Params("+")
|
|
c.Response().Header.SetCanonical(
|
|
utils.UnsafeBytes(fiber.HeaderContentDisposition),
|
|
utils.UnsafeBytes(`attachment;`),
|
|
)
|
|
if file == "version.txt" {
|
|
return c.SendString(config.Version)
|
|
}
|
|
return c.SendFile(filepath.Join(config.Path, file), false)
|
|
}
|