53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
package server
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"gitea.elara.ws/Hazel/transfem-startpage/internal/cache"
|
|
"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.FetchDiyHrt()
|
|
if err != nil {
|
|
log.Println(err)
|
|
}
|
|
|
|
e := echo.New()
|
|
|
|
// statically serve the file
|
|
cache := cache.NewCache(profile)
|
|
if !cache.Disabled {
|
|
cache.StartStaticServer(e)
|
|
|
|
log.Println("downloading website icons...")
|
|
for i, w := range Config.Template.Websites {
|
|
u, err := cache.CacheUrl(w.ImageUrl)
|
|
if err != nil {
|
|
log.Println(err)
|
|
}
|
|
Config.Template.Websites[i].ImageUrl = u
|
|
Config.Template.Websites[i].IsFetched = true
|
|
}
|
|
}
|
|
|
|
// 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
|
|
}
|