summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2015-09-02 09:54:35 -0400
committerUnknwon <u@gogs.io>2015-09-02 09:54:35 -0400
commitd951824ff9c52919e2821d0e9be2504550a994fc (patch)
tree5fc0d30d17c8999c2e993088a4b6b2df51ac217b
parent953bb06857f59f5c6987f68a08a94cf5a885b456 (diff)
downloadgitea-d951824ff9c52919e2821d0e9be2504550a994fc.tar.gz
gitea-d951824ff9c52919e2821d0e9be2504550a994fc.zip
able to download archive by API
-rw-r--r--cmd/web.go1
-rw-r--r--routers/api/v1/repo_file.go13
2 files changed, 14 insertions, 0 deletions
diff --git a/cmd/web.go b/cmd/web.go
index d3d339de43..641e331b4f 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -243,6 +243,7 @@ func runWeb(ctx *cli.Context) {
Post(bind(api.CreateHookOption{}), v1.CreateRepoHook)
m.Patch("/hooks/:id:int", bind(api.EditHookOption{}), v1.EditRepoHook)
m.Get("/raw/*", middleware.RepoRef(), v1.GetRepoRawFile)
+ m.Get("/archive/*", v1.GetRepoArchive)
}, middleware.ApiRepoAssignment(), middleware.ApiReqToken())
})
diff --git a/routers/api/v1/repo_file.go b/routers/api/v1/repo_file.go
index 73f97b2cae..540cd32fa8 100644
--- a/routers/api/v1/repo_file.go
+++ b/routers/api/v1/repo_file.go
@@ -5,6 +5,7 @@
package v1
import (
+ "github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/git"
"github.com/gogits/gogs/modules/middleware"
@@ -30,3 +31,15 @@ func GetRepoRawFile(ctx *middleware.Context) {
ctx.JSON(500, &base.ApiJsonErr{"ServeBlob: " + err.Error(), base.DOC_URL})
}
}
+
+func GetRepoArchive(ctx *middleware.Context) {
+ repoPath := models.RepoPath(ctx.Params(":username"), ctx.Params(":reponame"))
+ gitRepo, err := git.OpenRepository(repoPath)
+ if err != nil {
+ ctx.Handle(500, "RepoAssignment Invalid repo: "+repoPath, err)
+ return
+ }
+ ctx.Repo.GitRepo = gitRepo
+
+ repo.Download(ctx)
+}