| @@ -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. | // RepoRefLegacy unknown type, make educated guess and redirect. | ||||
| // for backward compatibility with previous URL scheme | // for backward compatibility with previous URL scheme | ||||
| RepoRefLegacy RepoRefType = iota | RepoRefLegacy RepoRefType = iota | ||||
| // RepoRefAny is for usage where educated guess is needed | |||||
| // but redirect can not be made | |||||
| RepoRefAny | |||||
| // RepoRefBranch branch | // RepoRefBranch branch | ||||
| RepoRefBranch | RepoRefBranch | ||||
| // RepoRefTag tag | // RepoRefTag tag | ||||
| @@ -497,7 +500,7 @@ func getRefNameFromPath(ctx *Context, path string, isExist func(string) bool) st | |||||
| func getRefName(ctx *Context, pathType RepoRefType) string { | func getRefName(ctx *Context, pathType RepoRefType) string { | ||||
| path := ctx.Params("*") | path := ctx.Params("*") | ||||
| switch pathType { | switch pathType { | ||||
| case RepoRefLegacy: | |||||
| case RepoRefLegacy, RepoRefAny: | |||||
| if refName := getRefName(ctx, RepoRefBranch); len(refName) > 0 { | if refName := getRefName(ctx, RepoRefBranch); len(refName) > 0 { | ||||
| return refName | return refName | ||||
| } | } | ||||
| @@ -385,7 +385,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
| Put(bind(api.AddCollaboratorOption{}), repo.AddCollaborator). | Put(bind(api.AddCollaboratorOption{}), repo.AddCollaborator). | ||||
| Delete(repo.DeleteCollaborator) | Delete(repo.DeleteCollaborator) | ||||
| }, reqToken()) | }, reqToken()) | ||||
| m.Get("/raw/*", context.RepoRef(), repo.GetRawFile) | |||||
| m.Get("/raw/*", context.RepoRefByType(context.RepoRefAny), repo.GetRawFile) | |||||
| m.Get("/archive/*", repo.GetArchive) | m.Get("/archive/*", repo.GetArchive) | ||||
| m.Combo("/forks").Get(repo.ListForks). | m.Combo("/forks").Get(repo.ListForks). | ||||
| Post(reqToken(), bind(api.CreateForkOption{}), repo.CreateFork) | Post(reqToken(), bind(api.CreateForkOption{}), repo.CreateFork) | ||||