diff --git a/server/acl.go b/server/acl.go index b653999c..58234322 100644 --- a/server/acl.go +++ b/server/acl.go @@ -105,7 +105,7 @@ func aclMiddleware(s *Server, next echo.HandlerFunc) echo.HandlerFunc { return next(c) } - if common.HasPrefixes(path, "/api/memo", "/api/tag", "/api/shortcut", "/api/memo/stats") && c.Request().Method == http.MethodGet { + if common.HasPrefixes(path, "/api/memo", "/api/tag", "/api/shortcut") && c.Request().Method == http.MethodGet { if _, err := strconv.Atoi(c.QueryParam("creatorId")); err == nil { return next(c) } diff --git a/server/http_getter.go b/server/http_getter.go index 65da8053..a0c40ada 100644 --- a/server/http_getter.go +++ b/server/http_getter.go @@ -11,7 +11,7 @@ import ( metric "github.com/usememos/memos/plugin/metrics" ) -func (s *Server) registerCrawlerPublicRoutes(g *echo.Group) { +func (s *Server) registerGetterPublicRoutes(g *echo.Group) { g.GET("/get/httpmeta", func(c echo.Context) error { ctx := c.Request().Context() urlStr := c.QueryParam("url") @@ -39,6 +39,7 @@ func (s *Server) registerCrawlerPublicRoutes(g *echo.Group) { } return nil }) + g.GET("/get/image", func(c echo.Context) error { ctx := c.Request().Context() urlStr := c.QueryParam("url") @@ -51,7 +52,7 @@ func (s *Server) registerCrawlerPublicRoutes(g *echo.Group) { image, err := getter.GetImage(urlStr) if err != nil { - return echo.NewHTTPError(http.StatusNotAcceptable, fmt.Sprintf("Failed to get image url: %s", urlStr)).SetInternal(err) + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Failed to get image url: %s", urlStr)).SetInternal(err) } s.Collector.Collect(ctx, &metric.Metric{ Name: "getter used", @@ -62,6 +63,7 @@ func (s *Server) registerCrawlerPublicRoutes(g *echo.Group) { c.Response().Writer.WriteHeader(http.StatusOK) c.Response().Writer.Header().Set("Content-Type", image.Mediatype) + c.Response().Writer.Header().Set(echo.HeaderCacheControl, "max-age=31536000, immutable") if _, err := c.Response().Writer.Write(image.Blob); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to write image blob").SetInternal(err) } diff --git a/server/resource.go b/server/resource.go index b21462fa..b7778edc 100644 --- a/server/resource.go +++ b/server/resource.go @@ -262,11 +262,10 @@ func (s *Server) registerResourcePublicRoutes(g *echo.Group) { c.Response().Writer.WriteHeader(http.StatusOK) c.Response().Writer.Header().Set("Content-Type", resource.Type) - c.Response().Header().Set(echo.HeaderCacheControl, "max-age=31536000, immutable") + c.Response().Writer.Header().Set(echo.HeaderCacheControl, "max-age=31536000, immutable") if _, err := c.Response().Writer.Write(resource.Blob); err != nil { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to write response").SetInternal(err) } - return nil }) } diff --git a/server/server.go b/server/server.go index 3ca332ef..243f26ad 100644 --- a/server/server.go +++ b/server/server.go @@ -66,7 +66,7 @@ func NewServer(profile *profile.Profile) *Server { publicGroup := e.Group("/o") s.registerResourcePublicRoutes(publicGroup) - s.registerCrawlerPublicRoutes(publicGroup) + s.registerGetterPublicRoutes(publicGroup) apiGroup := e.Group("/api") apiGroup.Use(func(next echo.HandlerFunc) echo.HandlerFunc {