2022-12-22 00:06:26 +03:00
// Copyright 2022 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package feed
import (
"time"
2024-01-15 05:19:25 +03:00
"code.gitea.io/gitea/models/db"
2022-12-22 00:06:26 +03:00
repo_model "code.gitea.io/gitea/models/repo"
2024-02-27 10:12:22 +03:00
"code.gitea.io/gitea/services/context"
2022-12-22 00:06:26 +03:00
"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 05:19:25 +03:00
releases , err := db . Find [ repo_model . Release ] ( ctx , repo_model . FindReleasesOptions {
2022-12-22 00:06:26 +03:00
IncludeTags : ! isReleasesOnly ,
2024-01-15 05:19:25 +03:00
RepoID : ctx . Repo . Repository . ID ,
2022-12-22 00:06:26 +03:00
} )
if err != nil {
ctx . ServerError ( "GetReleasesByRepoID" , err )
return
}
var title string
var link * feeds . Link
if isReleasesOnly {
2024-02-15 00:48:45 +03:00
title = ctx . Locale . TrString ( "repo.release.releases_for" , repo . FullName ( ) )
2022-12-22 00:06:26 +03:00
link = & feeds . Link { Href : repo . HTMLURL ( ) + "/release" }
} else {
2024-02-15 00:48:45 +03:00
title = ctx . Locale . TrString ( "repo.release.tags_for" , repo . FullName ( ) )
2022-12-22 00:06:26 +03:00
link = & feeds . Link { Href : repo . HTMLURL ( ) + "/tags" }
}
feed := & feeds . Feed {
Title : title ,
Link : link ,
Description : repo . Description ,
Created : time . Now ( ) ,
}
2024-04-29 11:47:56 +03:00
feed . Items , err = releasesToFeedItems ( ctx , releases )
2022-12-22 00:06:26 +03:00
if err != nil {
ctx . ServerError ( "releasesToFeedItems" , err )
return
}
writeFeed ( ctx , feed , formatType )
}