]> source.dussan.org Git - gitea.git/commitdiff
able to download archive by API
authorUnknwon <u@gogs.io>
Wed, 2 Sep 2015 13:54:35 +0000 (09:54 -0400)
committerUnknwon <u@gogs.io>
Wed, 2 Sep 2015 13:54:35 +0000 (09:54 -0400)
cmd/web.go
routers/api/v1/repo_file.go

index d3d339de435ebb89d20afac0439fa4be1f044751..641e331b4f857a8197a676ae7259ee04632acac9 100644 (file)
@@ -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())
                        })
 
index 73f97b2cae53c256c24911fa2c91e997778f3cf7..540cd32fa8fdfe600000ca183590f7f2c0a9cf54 100644 (file)
@@ -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)
+}