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()
|
|
|
|
}
|