Fix API raw requests for commits and tags (#2841)
This commit is contained in:
parent
e6bb8e7a4d
commit
08b124dd47
3 changed files with 33 additions and 2 deletions
28
integrations/api_repo_raw_test.go
Normal file
28
integrations/api_repo_raw_test.go
Normal file
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue