mirror of
https://github.com/go-shiori/shiori.git
synced 2025-10-21 19:16:19 +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
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package api_v1
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/go-shiori/shiori/internal/config"
|
|
"github.com/go-shiori/shiori/internal/http/middleware"
|
|
"github.com/go-shiori/shiori/internal/model"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type APIRoutes struct {
|
|
logger *logrus.Logger
|
|
deps *config.Dependencies
|
|
}
|
|
|
|
func (r *APIRoutes) Setup(g *gin.RouterGroup) model.Routes {
|
|
if r.deps.Config.Development {
|
|
r.handle(g, "/debug", NewDebugPIRoutes(r.logger, r.deps))
|
|
}
|
|
|
|
// Account API handles authentication in each route
|
|
r.handle(g, "/auth", NewAuthAPIRoutes(r.logger, r.deps))
|
|
|
|
// From here on, all routes require authentication
|
|
g.Use(middleware.AuthenticationRequired())
|
|
r.handle(g, "/bookmarks", NewBookmarksPIRoutes(r.logger, r.deps))
|
|
r.handle(g, "/tags", NewTagsPIRoutes(r.logger, r.deps))
|
|
|
|
return r
|
|
}
|
|
|
|
func (s *APIRoutes) handle(g *gin.RouterGroup, path string, routes model.Routes) {
|
|
group := g.Group(path)
|
|
routes.Setup(group)
|
|
}
|
|
|
|
func NewAPIRoutes(logger *logrus.Logger, deps *config.Dependencies) *APIRoutes {
|
|
return &APIRoutes{
|
|
logger: logger,
|
|
deps: deps,
|
|
}
|
|
}
|