sonr/pkg/nebula/nebula.go

48 lines
985 B
Go
Raw Normal View History

package nebula
import (
2024-09-30 21:16:13 -04:00
"context"
"embed"
"io/fs"
"net/http"
"github.com/labstack/echo/v4"
2024-09-30 21:16:13 -04:00
"github.com/onsonr/sonr/pkg/nebula/models"
)
//go:embed assets
var embeddedFiles embed.FS
2024-10-01 14:42:11 -04:00
//go:embed nebula.pkl
var config []byte
func getHTTPFS() (http.FileSystem, error) {
fsys, err := fs.Sub(embeddedFiles, "assets")
if err != nil {
return nil, err
}
return http.FS(fsys), nil
}
2024-09-26 13:05:09 -04:00
// UseAssets is a middleware that serves static files from the embedded assets
func UseAssets(e *echo.Echo) error {
err := models.LoadFromString(context.Background(), string(config))
2024-09-30 21:16:13 -04:00
if err != nil {
return err
}
fsys, err := getHTTPFS()
if err != nil {
return err
}
assets := http.FileServer(fsys)
e.GET("/", echo.WrapHandler(assets))
e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/assets/", assets)))
e.GET("/_nebula/config", handleGetConfig)
return nil
}
func handleGetConfig(c echo.Context) error {
return c.Blob(http.StatusOK, "application/octet-stream", config)
}