Added URL mapping for Release attachments like on github.com (#1707)

This commit is contained in:
gdeverlant 2019-01-06 23:37:30 +01:00 committed by techknowlogick
parent dd006db5a7
commit d3dc07f282
5 changed files with 71 additions and 9 deletions

View file

@ -310,6 +310,38 @@ func Action(ctx *context.Context) {
ctx.RedirectToFirst(ctx.Query("redirect_to"), ctx.Repo.RepoLink)
}
// RedirectDownload return a file based on the following infos:
func RedirectDownload(ctx *context.Context) {
var (
vTag = ctx.Params("vTag")
fileName = ctx.Params("fileName")
)
tagNames := []string{vTag}
curRepo := ctx.Repo.Repository
releases, err := models.GetReleasesByRepoIDAndNames(curRepo.ID, tagNames)
if err != nil {
if models.IsErrAttachmentNotExist(err) {
ctx.Error(404)
return
}
ctx.ServerError("RedirectDownload", err)
return
}
if len(releases) == 1 {
release := releases[0]
att, err := models.GetAttachmentByReleaseIDFileName(release.ID, fileName)
if err != nil {
ctx.Error(404)
return
}
if att != nil {
ctx.Redirect(setting.AppSubURL + "/attachments/" + att.UUID)
return
}
}
ctx.Error(404)
}
// Download download an archive of a repository
func Download(ctx *context.Context) {
var (