init push
This commit is contained in:
46
backend/handler/share/sitemap.go
Normal file
46
backend/handler/share/sitemap.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package share
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
|
||||
"github.com/chaitin/panda-wiki/handler"
|
||||
"github.com/chaitin/panda-wiki/log"
|
||||
"github.com/chaitin/panda-wiki/usecase"
|
||||
)
|
||||
|
||||
type ShareSitemapHandler struct {
|
||||
*handler.BaseHandler
|
||||
sitemapUsecase *usecase.SitemapUsecase
|
||||
appUsecase *usecase.AppUsecase
|
||||
logger *log.Logger
|
||||
}
|
||||
|
||||
func NewShareSitemapHandler(echo *echo.Echo, baseHandler *handler.BaseHandler, sitemapUsecase *usecase.SitemapUsecase, appUsecase *usecase.AppUsecase, logger *log.Logger) *ShareSitemapHandler {
|
||||
h := &ShareSitemapHandler{
|
||||
BaseHandler: baseHandler,
|
||||
sitemapUsecase: sitemapUsecase,
|
||||
appUsecase: appUsecase,
|
||||
logger: logger.WithModule("handler.share.sitemap"),
|
||||
}
|
||||
|
||||
group := echo.Group("/sitemap.xml")
|
||||
group.GET("", h.GetSitemap)
|
||||
|
||||
return h
|
||||
}
|
||||
|
||||
func (h *ShareSitemapHandler) GetSitemap(c echo.Context) error {
|
||||
kbID := c.Request().Header.Get("X-KB-ID")
|
||||
if kbID == "" {
|
||||
return h.NewResponseWithError(c, "kb_id is required", nil)
|
||||
}
|
||||
|
||||
xml, err := h.sitemapUsecase.GetSitemap(c.Request().Context(), kbID)
|
||||
if err != nil {
|
||||
return h.NewResponseWithError(c, "failed to generate sitemap", err)
|
||||
}
|
||||
|
||||
return c.Blob(http.StatusOK, echo.MIMEApplicationXMLCharsetUTF8, []byte(xml))
|
||||
}
|
||||
Reference in New Issue
Block a user