diff options
author | Lauris BH <lauris@nix.lv> | 2017-11-04 01:23:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-04 01:23:59 +0200 |
commit | 08b124dd47e5be365ac843031ed3ea73d1fbc151 (patch) | |
tree | 7e818a82feb5c0606be99d56cce9f7109b999473 | |
parent | e6bb8e7a4da2c4e10b54099756192351ff20b677 (diff) | |
download | gitea-08b124dd47e5be365ac843031ed3ea73d1fbc151.tar.gz gitea-08b124dd47e5be365ac843031ed3ea73d1fbc151.zip |
Fix API raw requests for commits and tags (#2841)
-rw-r--r-- | integrations/api_repo_raw_test.go | 28 | ||||
-rw-r--r-- | modules/context/repo.go | 5 | ||||
-rw-r--r-- | routers/api/v1/api.go | 2 |
3 files changed, 33 insertions, 2 deletions
diff --git a/integrations/api_repo_raw_test.go b/integrations/api_repo_raw_test.go new file mode 100644 index 0000000000..045e812210 --- /dev/null +++ b/integrations/api_repo_raw_test.go @@ -0,0 +1,28 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package integrations + +import ( + "net/http" + "testing" + + "code.gitea.io/gitea/models" +) + +func TestAPIReposRaw(t *testing.T) { + prepareTestEnv(t) + user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User) + // Login as User2. + session := loginUser(t, user.Name) + + for _, ref := range [...]string{ + "master", // Branch + "v1.1", // Tag + "65f1bf27bc3bf70f64657658635e66094edbcb4d", // Commit + } { + req := NewRequestf(t, "GET", "/api/v1/repos/%s/repo1/raw/%s/README.md", user.Name, ref) + session.MakeRequest(t, req, http.StatusOK) + } +} diff --git a/modules/context/repo.go b/modules/context/repo.go index 8e0c584c82..850b127e59 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -466,6 +466,9 @@ const ( // RepoRefLegacy unknown type, make educated guess and redirect. // for backward compatibility with previous URL scheme RepoRefLegacy RepoRefType = iota + // RepoRefAny is for usage where educated guess is needed + // but redirect can not be made + RepoRefAny // RepoRefBranch branch RepoRefBranch // RepoRefTag tag @@ -497,7 +500,7 @@ func getRefNameFromPath(ctx *Context, path string, isExist func(string) bool) st func getRefName(ctx *Context, pathType RepoRefType) string { path := ctx.Params("*") switch pathType { - case RepoRefLegacy: + case RepoRefLegacy, RepoRefAny: if refName := getRefName(ctx, RepoRefBranch); len(refName) > 0 { return refName } diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 79ae5799e3..4331929614 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -385,7 +385,7 @@ func RegisterRoutes(m *macaron.Macaron) { Put(bind(api.AddCollaboratorOption{}), repo.AddCollaborator). Delete(repo.DeleteCollaborator) }, reqToken()) - m.Get("/raw/*", context.RepoRef(), repo.GetRawFile) + m.Get("/raw/*", context.RepoRefByType(context.RepoRefAny), repo.GetRawFile) m.Get("/archive/*", repo.GetArchive) m.Combo("/forks").Get(repo.ListForks). Post(reqToken(), bind(api.CreateForkOption{}), repo.CreateFork) |