summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorCirno the Strongest <1447794+CirnoT@users.noreply.github.com>2020-05-11 11:44:36 +0200
committerGitHub <noreply@github.com>2020-05-11 12:44:36 +0300
commit32b8172e56c38d98ce493f31a30e1642e29a9030 (patch)
tree8cc6d9a66a0af925aa06e5a59e060456bd4d09a0 /routers
parent59b9b77a0dce02076195c5f6402afbbb6edd9deb (diff)
downloadgitea-32b8172e56c38d98ce493f31a30e1642e29a9030.tar.gz
gitea-32b8172e56c38d98ce493f31a30e1642e29a9030.zip
Consolidate API for getting single commit (#11368)
* Allow Git ref for /repos/{owner}/{repo}/git/commits/{sha} * Consolidate API for getting single commit * Fix tests and do it differently Co-authored-by: zeripath <art27@cantab.net>
Diffstat (limited to 'routers')
-rw-r--r--routers/api/v1/api.go3
-rw-r--r--routers/api/v1/repo/commits.go53
2 files changed, 7 insertions, 49 deletions
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go
index 754e146fc1..6973e1df53 100644
--- a/routers/api/v1/api.go
+++ b/routers/api/v1/api.go
@@ -817,14 +817,13 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Group("/commits", func() {
m.Get("", repo.GetAllCommits)
m.Group("/:ref", func() {
- m.Get("", repo.GetSingleCommitByRef)
m.Get("/status", repo.GetCombinedCommitStatusByRef)
m.Get("/statuses", repo.GetCommitStatusesByRef)
})
}, reqRepoReader(models.UnitTypeCode))
m.Group("/git", func() {
m.Group("/commits", func() {
- m.Get("/:sha", repo.GetSingleCommitBySHA)
+ m.Get("/:sha", repo.GetSingleCommit)
})
m.Get("/refs", repo.GetGitAllRefs)
m.Get("/refs/*", repo.GetGitRefs)
diff --git a/routers/api/v1/repo/commits.go b/routers/api/v1/repo/commits.go
index aa949aa9ec..f9bc2efa9a 100644
--- a/routers/api/v1/repo/commits.go
+++ b/routers/api/v1/repo/commits.go
@@ -21,9 +21,9 @@ import (
"code.gitea.io/gitea/routers/api/v1/utils"
)
-// GetSingleCommitBySHA get a commit via sha
-func GetSingleCommitBySHA(ctx *context.APIContext) {
- // swagger:operation GET /repos/{owner}/{repo}/git/commits/{sha} repository repoGetSingleCommitBySHA
+// GetSingleCommit get a commit via sha
+func GetSingleCommit(ctx *context.APIContext) {
+ // swagger:operation GET /repos/{owner}/{repo}/git/commits/{sha} repository repoGetSingleCommit
// ---
// summary: Get a single commit from a repository
// produces:
@@ -41,7 +41,7 @@ func GetSingleCommitBySHA(ctx *context.APIContext) {
// required: true
// - name: sha
// in: path
- // description: the commit hash
+ // description: a git ref or commit sha
// type: string
// required: true
// responses:
@@ -53,54 +53,13 @@ func GetSingleCommitBySHA(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
sha := ctx.Params(":sha")
- if !git.SHAPattern.MatchString(sha) {
- ctx.Error(http.StatusUnprocessableEntity, "no valid sha", fmt.Sprintf("no valid sha: %s", sha))
+ if (validation.GitRefNamePatternInvalid.MatchString(sha) || !validation.CheckGitRefAdditionalRulesValid(sha)) && !git.SHAPattern.MatchString(sha) {
+ ctx.Error(http.StatusUnprocessableEntity, "no valid ref or sha", fmt.Sprintf("no valid ref or sha: %s", sha))
return
}
getCommit(ctx, sha)
}
-// GetSingleCommitByRef get a commit via ref
-func GetSingleCommitByRef(ctx *context.APIContext) {
- // swagger:operation GET /repos/{owner}/{repo}/commits/{ref} repository repoGetSingleCommitByRef
- // ---
- // summary: Get a single commit from a repository
- // produces:
- // - application/json
- // parameters:
- // - name: owner
- // in: path
- // description: owner of the repo
- // type: string
- // required: true
- // - name: repo
- // in: path
- // description: name of the repo
- // type: string
- // required: true
- // - name: ref
- // in: path
- // description: a git ref
- // type: string
- // required: true
- // responses:
- // "200":
- // "$ref": "#/responses/Commit"
- // "422":
- // "$ref": "#/responses/validationError"
- // "404":
- // "$ref": "#/responses/notFound"
-
- ref := ctx.Params("ref")
-
- if validation.GitRefNamePatternInvalid.MatchString(ref) || !validation.CheckGitRefAdditionalRulesValid(ref) {
- ctx.Error(http.StatusUnprocessableEntity, "no valid sha", fmt.Sprintf("no valid ref: %s", ref))
- return
- }
-
- getCommit(ctx, ref)
-}
-
func getCommit(ctx *context.APIContext, identifier string) {
gitRepo, err := git.OpenRepository(ctx.Repo.Repository.RepoPath())
if err != nil {