From 5725273c8719cfa6c9931102da7b19c4572a44be Mon Sep 17 00:00:00 2001 From: Redish101 Date: Sat, 31 Aug 2024 12:23:20 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BC=98=E5=8C=96rss=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/docs/docs.go | 15 ++++++++++++--- internal/docs/swagger.json | 15 ++++++++++++--- internal/docs/swagger.yaml | 12 +++++++++--- internal/{rss/rss.go => feed/base.go} | 14 ++++++++++++-- server/handler/rss.go | 14 +++++++------- server/server.go | 2 +- 6 files changed, 53 insertions(+), 19 deletions(-) rename internal/{rss/rss.go => feed/base.go} (71%) diff --git a/internal/docs/docs.go b/internal/docs/docs.go index aeae9e8..eb86682 100644 --- a/internal/docs/docs.go +++ b/internal/docs/docs.go @@ -679,14 +679,14 @@ const docTemplate = `{ }, "/rss": { "get": { - "description": "获取包含所有文章的RSS", + "description": "获取包含所有文章的Feed", "produces": [ "text/xml" ], "tags": [ - "Rss" + "Feed" ], - "summary": "获取Rss", + "summary": "获取Feed", "responses": { "200": { "description": "RSS Feed" @@ -907,6 +907,9 @@ const docTemplate = `{ "desc": { "type": "string" }, + "draft": { + "type": "boolean" + }, "slug": { "type": "string" }, @@ -930,6 +933,9 @@ const docTemplate = `{ "desc": { "type": "string" }, + "draft": { + "type": "boolean" + }, "slug": { "type": "string" }, @@ -1090,6 +1096,9 @@ const docTemplate = `{ "desc": { "type": "string" }, + "draft": { + "type": "boolean" + }, "id": { "type": "integer" }, diff --git a/internal/docs/swagger.json b/internal/docs/swagger.json index fcd6c6d..7abf58b 100644 --- a/internal/docs/swagger.json +++ b/internal/docs/swagger.json @@ -672,14 +672,14 @@ }, "/rss": { "get": { - "description": "获取包含所有文章的RSS", + "description": "获取包含所有文章的Feed", "produces": [ "text/xml" ], "tags": [ - "Rss" + "Feed" ], - "summary": "获取Rss", + "summary": "获取Feed", "responses": { "200": { "description": "RSS Feed" @@ -900,6 +900,9 @@ "desc": { "type": "string" }, + "draft": { + "type": "boolean" + }, "slug": { "type": "string" }, @@ -923,6 +926,9 @@ "desc": { "type": "string" }, + "draft": { + "type": "boolean" + }, "slug": { "type": "string" }, @@ -1083,6 +1089,9 @@ "desc": { "type": "string" }, + "draft": { + "type": "boolean" + }, "id": { "type": "integer" }, diff --git a/internal/docs/swagger.yaml b/internal/docs/swagger.yaml index ec00db6..46809f3 100644 --- a/internal/docs/swagger.yaml +++ b/internal/docs/swagger.yaml @@ -74,6 +74,8 @@ definitions: type: string desc: type: string + draft: + type: boolean slug: type: string title: @@ -90,6 +92,8 @@ definitions: type: string desc: type: string + draft: + type: boolean slug: type: string title: @@ -202,6 +206,8 @@ definitions: $ref: '#/definitions/gorm.DeletedAt' desc: type: string + draft: + type: boolean id: type: integer slug: @@ -664,7 +670,7 @@ paths: - 站点管理 /rss: get: - description: 获取包含所有文章的RSS + description: 获取包含所有文章的Feed produces: - text/xml responses: @@ -674,9 +680,9 @@ paths: description: 服务器错误 schema: $ref: '#/definitions/common.Resp' - summary: 获取Rss + summary: 获取Feed tags: - - Rss + - Feed /site: get: description: 获取站点信息 diff --git a/internal/rss/rss.go b/internal/feed/base.go similarity index 71% rename from internal/rss/rss.go rename to internal/feed/base.go index 42ff828..fa27c31 100644 --- a/internal/rss/rss.go +++ b/internal/feed/base.go @@ -1,13 +1,15 @@ -package rss +package feed import ( + "fmt" + "github.com/redish101/reblog/internal/core" "github.com/redish101/reblog/internal/model" "github.com/gorilla/feeds" ) -func GenerateRSS(app *core.App, articles []*model.Article) (string, error) { +func GenerateFeed(app *core.App, articles []*model.Article) (string, error) { s := app.Query().Site site, err := s.First() @@ -16,9 +18,16 @@ func GenerateRSS(app *core.App, articles []*model.Article) (string, error) { return "", err } + user, err := app.Query().User.First() + + if err != nil { + return "", err + } + feed := feeds.Feed{ Title: site.Name, Description: site.Desc, + Author: &feeds.Author{Name: user.Nickname}, Link: &feeds.Link{Href: site.Url}, } @@ -33,6 +42,7 @@ func GenerateRSS(app *core.App, articles []*model.Article) (string, error) { Title: article.Title, Description: article.Desc, Content: markdownService.Render(article.Content), + Link: &feeds.Link{Href: fmt.Sprintf("%s/article/%s", site.Url, article.Slug)}, Created: article.CreatedAt, }) } diff --git a/server/handler/rss.go b/server/handler/rss.go index aa9f5d9..a915cab 100644 --- a/server/handler/rss.go +++ b/server/handler/rss.go @@ -2,21 +2,21 @@ package handler import ( "github.com/redish101/reblog/internal/core" - "github.com/redish101/reblog/internal/rss" + "github.com/redish101/reblog/internal/feed" "github.com/redish101/reblog/server/common" "github.com/gofiber/fiber/v3" ) -// @Summary 获取Rss -// @Description 获取包含所有文章的RSS -// @Tags Rss +// @Summary 获取Feed +// @Description 获取包含所有文章的Feed +// @Tags Feed // @Produce xml // @Success 200 "RSS Feed" // @Failure 500 {object} common.Resp "服务器错误" // @Router /rss [get] -func Rss(app *core.App, router fiber.Router) { - router.Get("/rss", func(c fiber.Ctx) error { +func Feed(app *core.App, router fiber.Router) { + router.Get("/feed", func(c fiber.Ctx) error { a := app.Query().Article limit := app.Config().Rss.Limit @@ -26,7 +26,7 @@ func Rss(app *core.App, router fiber.Router) { return common.RespServerError(c, err) } - rssString, err := rss.GenerateRSS(app, articles) + rssString, err := feed.GenerateFeed(app, articles) if err != nil { return common.RespServerError(c, err) diff --git a/server/server.go b/server/server.go index 5a3789b..36f0e91 100644 --- a/server/server.go +++ b/server/server.go @@ -96,7 +96,7 @@ func LoadHttp(app *core.App) { h.ArticleUpdate(app, article) // rss - h.Rss(app, api) + h.Feed(app, api) // site site := api.Group("/site")