2022-12-22 04:06:26 +07:00
// Copyright 2022 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package feed
import (
"time"
2024-01-15 10:19:25 +08:00
"code.gitea.io/gitea/models/db"
2022-12-22 04:06:26 +07:00
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/modules/context"
"github.com/gorilla/feeds"
)
// shows tags and/or releases on the repo as RSS / Atom feed
func ShowReleaseFeed ( ctx * context . Context , repo * repo_model . Repository , isReleasesOnly bool , formatType string ) {
2024-01-15 10:19:25 +08:00
releases , err := db . Find [ repo_model . Release ] ( ctx , repo_model . FindReleasesOptions {
2022-12-22 04:06:26 +07:00
IncludeTags : ! isReleasesOnly ,
2024-01-15 10:19:25 +08:00
RepoID : ctx . Repo . Repository . ID ,
2022-12-22 04:06:26 +07:00
} )
if err != nil {
ctx . ServerError ( "GetReleasesByRepoID" , err )
return
}
var title string
var link * feeds . Link
if isReleasesOnly {
2024-02-15 05:48:45 +08:00
title = ctx . Locale . TrString ( "repo.release.releases_for" , repo . FullName ( ) )
2022-12-22 04:06:26 +07:00
link = & feeds . Link { Href : repo . HTMLURL ( ) + "/release" }
} else {
2024-02-15 05:48:45 +08:00
title = ctx . Locale . TrString ( "repo.release.tags_for" , repo . FullName ( ) )
2022-12-22 04:06:26 +07:00
link = & feeds . Link { Href : repo . HTMLURL ( ) + "/tags" }
}
feed := & feeds . Feed {
Title : title ,
Link : link ,
Description : repo . Description ,
Created : time . Now ( ) ,
}
feed . Items , err = releasesToFeedItems ( ctx , releases , isReleasesOnly )
if err != nil {
ctx . ServerError ( "releasesToFeedItems" , err )
return
}
writeFeed ( ctx , feed , formatType )
}