aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2021-02-09 00:15:47 +0000
committerGitHub <noreply@github.com>2021-02-09 01:15:47 +0100
commitb337c606d3669b3e2f9b805d6c74b593d6271414 (patch)
treeb13f8541258dd11a296169c69f897407bdcf70bf
parent758627cf8f3f32681bf792b3a6b9f74572210d89 (diff)
downloadgitea-b337c606d3669b3e2f9b805d6c74b593d6271414.tar.gz
gitea-b337c606d3669b3e2f9b805d6c74b593d6271414.zip
Add support for ref parameter to get raw file API (#14602)
Fix #14597 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
-rw-r--r--routers/api/v1/repo/file.go22
-rw-r--r--templates/swagger/v1_json.tmpl6
2 files changed, 27 insertions, 1 deletions
diff --git a/routers/api/v1/repo/file.go b/routers/api/v1/repo/file.go
index 2bd57f1460..37e02874b4 100644
--- a/routers/api/v1/repo/file.go
+++ b/routers/api/v1/repo/file.go
@@ -43,6 +43,11 @@ func GetRawFile(ctx *context.APIContext) {
// description: filepath of the file to get
// type: string
// required: true
+ // - name: ref
+ // in: query
+ // description: "The name of the commit/branch/tag. Default the repository’s default branch (usually master)"
+ // type: string
+ // required: false
// responses:
// 200:
// description: success
@@ -54,7 +59,22 @@ func GetRawFile(ctx *context.APIContext) {
return
}
- blob, err := ctx.Repo.Commit.GetBlobByPath(ctx.Repo.TreePath)
+ commit := ctx.Repo.Commit
+
+ if ref := ctx.QueryTrim("ref"); len(ref) > 0 {
+ var err error
+ commit, err = ctx.Repo.GitRepo.GetCommit(ref)
+ if err != nil {
+ if git.IsErrNotExist(err) {
+ ctx.NotFound()
+ } else {
+ ctx.Error(http.StatusInternalServerError, "GetBlobByPath", err)
+ }
+ return
+ }
+ }
+
+ blob, err := commit.GetBlobByPath(ctx.Repo.TreePath)
if err != nil {
if git.IsErrNotExist(err) {
ctx.NotFound()
diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl
index 45f396f283..28aa617799 100644
--- a/templates/swagger/v1_json.tmpl
+++ b/templates/swagger/v1_json.tmpl
@@ -7845,6 +7845,12 @@
"name": "filepath",
"in": "path",
"required": true
+ },
+ {
+ "type": "string",
+ "description": "The name of the commit/branch/tag. Default the repository’s default branch (usually master)",
+ "name": "ref",
+ "in": "query"
}
],
"responses": {