Files
edgevpn/api/api.go
2021-10-30 01:20:40 +02:00

45 lines
863 B
Go

package api
import (
"embed"
"io/fs"
"net/http"
"github.com/labstack/echo/v4"
"github.com/mudler/edgevpn/pkg/blockchain"
)
//go:embed public
var embededFiles embed.FS
func getFileSystem() http.FileSystem {
fsys, err := fs.Sub(embededFiles, "public")
if err != nil {
panic(err)
}
return http.FS(fsys)
}
func API(l string, ledger *blockchain.Ledger) error {
ec := echo.New()
assetHandler := http.FileServer(getFileSystem())
ec.GET("/api/data", func(c echo.Context) error {
list := []blockchain.Data{}
for _, v := range ledger.CurrentData() {
list = append(list, v)
}
return c.JSON(http.StatusOK, list)
})
ec.GET("/*", echo.WrapHandler(http.StripPrefix("/", assetHandler)))
ec.GET("/api/blockchain", func(c echo.Context) error {
// c.SetHandler()
return c.JSON(http.StatusOK, ledger.BlockChain())
})
return ec.Start(l)
}