@@ -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) | |||
} | |||
} |
@@ -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 | |||
} |
@@ -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) |