diff options
author | gdeverlant <e.bekrek@yandex.com> | 2019-01-06 23:37:30 +0100 |
---|---|---|
committer | techknowlogick <hello@techknowlogick.com> | 2019-01-06 17:37:30 -0500 |
commit | d3dc07f282936849897f861346777b47c8c388d3 (patch) | |
tree | 2da810fc1d6671bf8659f9bf868e184698f0fc7c /routers/repo/repo.go | |
parent | dd006db5a719b33aef7887faab48718e4b0f2786 (diff) | |
download | gitea-d3dc07f282936849897f861346777b47c8c388d3.tar.gz gitea-d3dc07f282936849897f861346777b47c8c388d3.zip |
Added URL mapping for Release attachments like on github.com (#1707)
Diffstat (limited to 'routers/repo/repo.go')
-rw-r--r-- | routers/repo/repo.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 236d66bd1f..6071b7a54a 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -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 ( |