mirror of
https://github.com/go-shiori/shiori.git
synced 2025-11-09 14:51:31 +08:00
* added 404 template * added auth domain * added embed file for frontend * added base config and dependencies * added basic new http server * added separated server command * updated go modules * removed modd file * Added shortcut to send internal server error response * Added JWT support to Auth Domain * Added JWT support to API * docs: added comments to response struct * naming * inline returns * updated dependencies * production logger * bookmarks endpoint * reverted old views api path * frontend for api v1 * proper 404 error (not working atm) * use response * removed 404 html * server error handler * login and basic auth * adjusted session duration * properly retrieve tags * properly delete bookmark * cleanup * archiver domain * debug routes * bookmark routes * expiration by parameter * move to logrus * logout * frontend cache * updated dependencies * http: migrated to gin * linted * Added version command * unit tests, docs * response test utils and tests * remove logout handler * auth * createtag * improved http test utilities * assert message equals * Remove 1.19 from test matrix * moved api to v1 folder * docs: contribute docs * updated makefile * updated usage docs * warn in server command * updaed docs with shiori version command * Updated documentation * deps: update
46 lines
948 B
Go
46 lines
948 B
Go
package routes
|
|
|
|
import (
|
|
"embed"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/gin-contrib/gzip"
|
|
"github.com/gin-contrib/static"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/go-shiori/shiori/internal/config"
|
|
"github.com/go-shiori/shiori/internal/http/frontend"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type frontendFS struct {
|
|
http.FileSystem
|
|
}
|
|
|
|
func (fs frontendFS) Exists(prefix string, path string) bool {
|
|
_, err := fs.Open(path)
|
|
return err == nil
|
|
}
|
|
|
|
func NewFrontendFS(fs embed.FS) static.ServeFileSystem {
|
|
return frontendFS{
|
|
FileSystem: http.FS(fs),
|
|
}
|
|
}
|
|
|
|
type FrontendRoutes struct {
|
|
logger *logrus.Logger
|
|
maxAge time.Duration
|
|
}
|
|
|
|
func (r *FrontendRoutes) Setup(e *gin.Engine) {
|
|
e.Use(gzip.Gzip(gzip.DefaultCompression))
|
|
e.Use(static.Serve("/", NewFrontendFS(frontend.Assets)))
|
|
}
|
|
|
|
func NewFrontendRoutes(logger *logrus.Logger, cfg config.HttpConfig) *FrontendRoutes {
|
|
return &FrontendRoutes{
|
|
logger: logger,
|
|
maxAge: cfg.Routes.Frontend.MaxAge,
|
|
}
|
|
}
|