implemented start server
This commit is contained in:
parent
94b3f4c0f2
commit
4e87c77ccb
28
internal/rendering/diyhrt.go
Normal file
28
internal/rendering/diyhrt.go
Normal file
@ -0,0 +1,28 @@
|
||||
package rendering
|
||||
|
||||
import (
|
||||
"maps"
|
||||
"slices"
|
||||
|
||||
"gitea.elara.ws/Hazel/transfem-startpage/internal/diyhrt"
|
||||
)
|
||||
|
||||
func (c *Config) LoadDiyHrt(listings []diyhrt.Listing) {
|
||||
existingStores := make(map[int]diyhrt.Store)
|
||||
|
||||
for _, listing := range listings {
|
||||
existingStores[listing.Store.Id] = listing.Store
|
||||
}
|
||||
|
||||
c.Template.Listings = c.DiyHrt.ListingFilter.Filter(listings)
|
||||
c.Template.Stores = c.DiyHrt.StoreFilter.Filter(slices.Collect(maps.Values(existingStores)))
|
||||
}
|
||||
|
||||
func (c *Config) FetchDiyHrt() error {
|
||||
l, err := diyhrt.GetListings(c.DiyHrt.ApiKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
c.LoadDiyHrt(l)
|
||||
return nil
|
||||
}
|
42
internal/server/embed.go
Normal file
42
internal/server/embed.go
Normal file
@ -0,0 +1,42 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"embed"
|
||||
"io/fs"
|
||||
"log"
|
||||
"net/http"
|
||||
"text/template"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
var FrontendFiles embed.FS
|
||||
|
||||
func getFileContent() string {
|
||||
content, err := FrontendFiles.ReadFile("frontend/index.html")
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
return string(content)
|
||||
}
|
||||
|
||||
func getIndex(c echo.Context) error {
|
||||
IndexTemplate := template.Must(template.New("index").Parse(getFileContent()))
|
||||
|
||||
var tpl bytes.Buffer
|
||||
IndexTemplate.Execute(&tpl, Config.Template)
|
||||
|
||||
return c.HTML(http.StatusOK, tpl.String())
|
||||
}
|
||||
|
||||
func getFileSystem() http.FileSystem {
|
||||
fsys, err := fs.Sub(FrontendFiles, "frontend")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return http.FS(fsys)
|
||||
}
|
48
internal/server/server.go
Normal file
48
internal/server/server.go
Normal file
@ -0,0 +1,48 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"gitea.elara.ws/Hazel/transfem-startpage/internal/rendering"
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
var Config = rendering.NewConfig()
|
||||
|
||||
func Start(profile string) error {
|
||||
err := Config.ScanForConfigFile(profile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = Config.Init()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = Config.FetchDiyHrt()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
|
||||
e := echo.New()
|
||||
|
||||
// statically serve the file
|
||||
cacheDir, err := rendering.GetCacheDir()
|
||||
if err == nil {
|
||||
e.Static("/cache", cacheDir)
|
||||
} else {
|
||||
log.Println("didn't enable cache dir", err)
|
||||
}
|
||||
|
||||
// https://echo.labstack.com/docs/cookbook/embed-resources
|
||||
staticHandler := http.FileServer(getFileSystem())
|
||||
e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/", staticHandler)))
|
||||
e.GET("/scripts/*", echo.WrapHandler(http.StripPrefix("/", staticHandler)))
|
||||
e.GET("/", getIndex)
|
||||
|
||||
e.Logger.Fatal(e.Start(":" + strconv.Itoa(Config.Server.Port)))
|
||||
return nil
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user