Parcourir la source

able to download archive by API

Unknwon il y a 9 ans
Parent
commit
d951824ff9
2 fichiers modifiés avec 14 ajouts et 0 suppressions
  1. 1 0
      cmd/web.go
  2. 13 0
      routers/api/v1/repo_file.go

+ 1 - 0
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())
 			})
 

+ 13 - 0
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)
+}