code.gitea.io/gitea@v1.22.3/routers/web/feed/release.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package feed 5 6 import ( 7 "time" 8 9 "code.gitea.io/gitea/models/db" 10 repo_model "code.gitea.io/gitea/models/repo" 11 "code.gitea.io/gitea/services/context" 12 13 "github.com/gorilla/feeds" 14 ) 15 16 // shows tags and/or releases on the repo as RSS / Atom feed 17 func ShowReleaseFeed(ctx *context.Context, repo *repo_model.Repository, isReleasesOnly bool, formatType string) { 18 releases, err := db.Find[repo_model.Release](ctx, repo_model.FindReleasesOptions{ 19 IncludeTags: !isReleasesOnly, 20 RepoID: ctx.Repo.Repository.ID, 21 }) 22 if err != nil { 23 ctx.ServerError("GetReleasesByRepoID", err) 24 return 25 } 26 27 var title string 28 var link *feeds.Link 29 30 if isReleasesOnly { 31 title = ctx.Locale.TrString("repo.release.releases_for", repo.FullName()) 32 link = &feeds.Link{Href: repo.HTMLURL() + "/release"} 33 } else { 34 title = ctx.Locale.TrString("repo.release.tags_for", repo.FullName()) 35 link = &feeds.Link{Href: repo.HTMLURL() + "/tags"} 36 } 37 38 feed := &feeds.Feed{ 39 Title: title, 40 Link: link, 41 Description: repo.Description, 42 Created: time.Now(), 43 } 44 45 feed.Items, err = releasesToFeedItems(ctx, releases, isReleasesOnly) 46 if err != nil { 47 ctx.ServerError("releasesToFeedItems", err) 48 return 49 } 50 51 writeFeed(ctx, feed, formatType) 52 }