mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-19 23:28:14 +00:00
allow "latest" to be used in release vTag when downloading file (#26748)
Hello, In the discord I saw [someone](https://discord.com/channels/322538954119184384/1069795723178160168/1145061200644800514) complaining that you can't use the "latest" keyword as release tag to download a specific file: In his example: https://www.uberwald.me/gitea/public/fvtt-ecryme/releases/latest/system.json However the latest keyword works for the release page, so I think it's a good thing to implement this on the release attachment download url too. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
9b0743ae33
commit
a7d9a70552
|
@ -378,10 +378,6 @@ func RedirectDownload(ctx *context.Context) {
|
|||
curRepo := ctx.Repo.Repository
|
||||
releases, err := repo_model.GetReleasesByRepoIDAndNames(ctx, curRepo.ID, tagNames)
|
||||
if err != nil {
|
||||
if repo_model.IsErrAttachmentNotExist(err) {
|
||||
ctx.Error(http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
ctx.ServerError("RedirectDownload", err)
|
||||
return
|
||||
}
|
||||
|
@ -396,6 +392,23 @@ func RedirectDownload(ctx *context.Context) {
|
|||
ServeAttachment(ctx, att.UUID)
|
||||
return
|
||||
}
|
||||
} else if len(releases) == 0 && vTag == "latest" {
|
||||
// GitHub supports the alias "latest" for the latest release
|
||||
// We only fetch the latest release if the tag is "latest" and no release with the tag "latest" exists
|
||||
release, err := repo_model.GetLatestReleaseByRepoID(ctx.Repo.Repository.ID)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
att, err := repo_model.GetAttachmentByReleaseIDFileName(ctx, release.ID, fileName)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
if att != nil {
|
||||
ServeAttachment(ctx, att.UUID)
|
||||
return
|
||||
}
|
||||
}
|
||||
ctx.Error(http.StatusNotFound)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue