Shioriko/pkg/app/app.go

63 lines
1.1 KiB
Go
Raw Normal View History

2021-05-09 15:07:23 +00:00
package app
import (
"embed"
"net/http"
2021-05-11 12:21:11 +00:00
"os"
2021-05-09 15:07:23 +00:00
"github.com/Damillora/Shioriko/pkg/config"
"github.com/Damillora/Shioriko/pkg/database"
"github.com/gin-contrib/cors"
"github.com/gin-contrib/static"
"github.com/gin-gonic/gin"
)
type embedFileSystem struct {
http.FileSystem
}
func (e embedFileSystem) Exists(prefix string, path string) bool {
_, err := e.Open(path)
if err != nil {
return false
}
return true
}
func EmbedFolder(fsEmbed embed.FS) static.ServeFileSystem {
return embedFileSystem{
FileSystem: http.FS(fsEmbed),
}
}
func Initialize() {
config.InitializeConfig()
2021-05-11 12:21:11 +00:00
previewDir := config.CurrentConfig.DataDirectory + "/preview"
thumbnailDir := config.CurrentConfig.DataDirectory + "/thumbnail"
if _, err := os.Stat(previewDir); os.IsNotExist(err) {
os.Mkdir(previewDir, 0755)
}
if _, err := os.Stat(thumbnailDir); os.IsNotExist(err) {
os.Mkdir(thumbnailDir, 0755)
}
2021-05-09 15:07:23 +00:00
database.Initialize()
}
func Start() {
g := gin.Default()
g.Static("/static", "./web/static")
g.Static("/data", config.CurrentConfig.DataDirectory)
g.LoadHTMLGlob("web/template/**/*")
g.Use(cors.Default())
InitializeRoutes(g)
g.Run()
}