v1.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package v1
  2. import (
  3. "github.com/labstack/echo/v4"
  4. "github.com/usememos/memos/server/profile"
  5. "github.com/usememos/memos/store"
  6. )
  7. type APIV1Service struct {
  8. Secret string
  9. Profile *profile.Profile
  10. Store *store.Store
  11. }
  12. func NewAPIV1Service(secret string, profile *profile.Profile, store *store.Store) *APIV1Service {
  13. return &APIV1Service{
  14. Secret: secret,
  15. Profile: profile,
  16. Store: store,
  17. }
  18. }
  19. func (s *APIV1Service) Register(rootGroup *echo.Group) {
  20. // Register RSS routes.
  21. s.registerRSSRoutes(rootGroup)
  22. // Register API v1 routes.
  23. apiV1Group := rootGroup.Group("/api/v1")
  24. apiV1Group.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
  25. return JWTMiddleware(s, next, s.Secret)
  26. })
  27. s.registerSystemRoutes(apiV1Group)
  28. s.registerSystemSettingRoutes(apiV1Group)
  29. s.registerAuthRoutes(apiV1Group)
  30. s.registerIdentityProviderRoutes(apiV1Group)
  31. s.registerUserRoutes(apiV1Group)
  32. s.registerUserSettingRoutes(apiV1Group)
  33. s.registerTagRoutes(apiV1Group)
  34. s.registerShortcutRoutes(apiV1Group)
  35. s.registerStorageRoutes(apiV1Group)
  36. s.registerResourceRoutes(apiV1Group)
  37. s.registerMemoRoutes(apiV1Group)
  38. s.registerMemoOrganizerRoutes(apiV1Group)
  39. s.registerMemoResourceRoutes(apiV1Group)
  40. s.registerMemoRelationRoutes(apiV1Group)
  41. s.registerOpenAIRoutes(apiV1Group)
  42. // Register public routes.
  43. publicGroup := rootGroup.Group("/o")
  44. publicGroup.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
  45. return JWTMiddleware(s, next, s.Secret)
  46. })
  47. s.registerGetterPublicRoutes(publicGroup)
  48. s.registerResourcePublicRoutes(publicGroup)
  49. }