yao/service/static.go

64 lines
1.2 KiB
Go

package service
import (
"fmt"
"net/http"
"strings"
"github.com/yaoapp/yao/data"
"github.com/yaoapp/yao/service/fs"
"github.com/yaoapp/yao/share"
)
// AppFileServer static file server
var AppFileServer http.Handler
// XGenFileServerV1 XGen v1.0
var XGenFileServerV1 http.Handler = http.FileServer(data.XgenV1())
// AdminRoot cache
var AdminRoot = ""
// AdminRootLen cache
var AdminRootLen = 0
// SetupStatic setup static file server
func SetupStatic() error {
// SetAdmin Root
adminRoot()
if isPWA() {
AppFileServer = http.FileServer(fs.DirPWA("public"))
return nil
}
AppFileServer = http.FileServer(fs.Dir("public"))
return nil
}
// rewrite path
func isPWA() bool {
if share.App.Static == nil {
return false
}
return share.App.Static.PWA
}
// SetupAdmin setup admin static root
func adminRoot() (string, int) {
if AdminRoot != "" {
return AdminRoot, AdminRootLen
}
adminRoot := "/yao/"
if share.App.AdminRoot != "" {
root := strings.TrimPrefix(share.App.AdminRoot, "/")
root = strings.TrimSuffix(root, "/")
adminRoot = fmt.Sprintf("/%s/", root)
}
adminRootLen := len(adminRoot)
AdminRoot = adminRoot
AdminRootLen = adminRootLen
return AdminRoot, AdminRootLen
}