embed static files

This commit is contained in:
kiwiidb
2022-01-28 09:57:51 +01:00
parent d947b4fb6b
commit 242e1438a6
2 changed files with 21 additions and 7 deletions

View File

@@ -3,6 +3,7 @@ package controllers
import (
"bytes"
"context"
_ "embed"
"fmt"
"html/template"
"net/http"
@@ -22,11 +23,13 @@ const (
// HomeController : HomeController struct
type HomeController struct {
svc *service.LndhubService
html string
}
func NewHomeController(svc *service.LndhubService) *HomeController {
func NewHomeController(svc *service.LndhubService, html string) *HomeController {
return &HomeController{
svc: svc,
html: html,
}
}
@@ -57,7 +60,6 @@ func Max(x, y int) int {
}
return x
}
func (controller *HomeController) QR(c echo.Context) error {
customPath := strings.Replace(c.Request().URL.Path, "/qr", "", 1)
encoded := url.QueryEscape(fmt.Sprintf("%s://%s%s", c.Request().URL.Scheme, c.Request().Host, customPath))
@@ -78,7 +80,8 @@ func (controller *HomeController) Home(c echo.Context) error {
if err != nil {
return err
}
tmpl, err := template.ParseFiles("templates/index.html")
tmpl, err := template.New("index").Parse(controller.html)
if err != nil {
return err
}

15
main.go
View File

@@ -2,6 +2,7 @@ package main
import (
"context"
"embed"
"encoding/hex"
"fmt"
"log"
@@ -31,6 +32,12 @@ import (
"github.com/ziflex/lecho/v3"
)
//go:embed templates/index.html
var html string
//go:embed static/*
var staticContent embed.FS
func main() {
c := &service.Config{}
@@ -140,12 +147,16 @@ func main() {
// These endpoints are currently not supported and we return a blank response for backwards compatibility
blankController := controllers.NewBlankController(svc)
homeController := controllers.NewHomeController(svc)
secured.GET("/getbtc", blankController.GetBtc)
secured.GET("/getpending", blankController.GetPending)
//Index page endpoints, no Authorization required
homeController := controllers.NewHomeController(svc, html)
e.GET("/", homeController.Home)
e.GET("/qr", homeController.QR)
e.Static("/static", "static")
//workaround, just adding /static would make a request to these resources hit the authorized group
e.GET("/static/css/*", echo.WrapHandler(http.FileServer(http.FS(staticContent))))
e.GET("/static/img/*", echo.WrapHandler(http.FileServer(http.FS(staticContent))))
// Subscribe to LND invoice updates in the background
go svc.InvoiceUpdateSubscription(context.Background())