code.gitea.io/gitea@v1.21.7/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  	repo_model "code.gitea.io/gitea/models/repo"
    10  	"code.gitea.io/gitea/modules/context"
    11  
    12  	"github.com/gorilla/feeds"
    13  )
    14  
    15  // shows tags and/or releases on the repo as RSS / Atom feed
    16  func ShowReleaseFeed(ctx *context.Context, repo *repo_model.Repository, isReleasesOnly bool, formatType string) {
    17  	releases, err := repo_model.GetReleasesByRepoID(ctx, ctx.Repo.Repository.ID, repo_model.FindReleasesOptions{
    18  		IncludeTags: !isReleasesOnly,
    19  	})
    20  	if err != nil {
    21  		ctx.ServerError("GetReleasesByRepoID", err)
    22  		return
    23  	}
    24  
    25  	var title string
    26  	var link *feeds.Link
    27  
    28  	if isReleasesOnly {
    29  		title = ctx.Tr("repo.release.releases_for", repo.FullName())
    30  		link = &feeds.Link{Href: repo.HTMLURL() + "/release"}
    31  	} else {
    32  		title = ctx.Tr("repo.release.tags_for", repo.FullName())
    33  		link = &feeds.Link{Href: repo.HTMLURL() + "/tags"}
    34  	}
    35  
    36  	feed := &feeds.Feed{
    37  		Title:       title,
    38  		Link:        link,
    39  		Description: repo.Description,
    40  		Created:     time.Now(),
    41  	}
    42  
    43  	feed.Items, err = releasesToFeedItems(ctx, releases, isReleasesOnly)
    44  	if err != nil {
    45  		ctx.ServerError("releasesToFeedItems", err)
    46  		return
    47  	}
    48  
    49  	writeFeed(ctx, feed, formatType)
    50  }