aboutsummaryrefslogtreecommitdiff
path: root/routers/repo/download.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/repo/download.go')
-rw-r--r--routers/repo/download.go78
1 files changed, 9 insertions, 69 deletions
diff --git a/routers/repo/download.go b/routers/repo/download.go
index 7e20b0e0..abb9b062 100644
--- a/routers/repo/download.go
+++ b/routers/repo/download.go
@@ -6,24 +6,18 @@ package repo
import (
"io"
- "os"
- "path/filepath"
-
- "github.com/Unknwon/com"
- "github.com/go-martini/martini"
-
- "github.com/gogits/git"
+ "path"
"github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/middleware"
)
-func SingleDownload(ctx *middleware.Context, params martini.Params) {
- treename := params["_1"]
+func SingleDownload(ctx *middleware.Context) {
+ treename := ctx.Params("*")
blob, err := ctx.Repo.Commit.GetBlobByPath(treename)
if err != nil {
- ctx.Handle(500, "repo.SingleDownload(GetBlobByPath)", err)
+ ctx.Handle(500, "GetBlobByPath", err)
return
}
@@ -39,67 +33,13 @@ func SingleDownload(ctx *middleware.Context, params martini.Params) {
buf = buf[:n]
}
- defer func() {
- dataRc.Close()
- }()
-
contentType, isTextFile := base.IsTextFile(buf)
_, isImageFile := base.IsImageFile(buf)
- ctx.Res.Header().Set("Content-Type", contentType)
+ ctx.Resp.Header().Set("Content-Type", contentType)
if !isTextFile && !isImageFile {
- ctx.Res.Header().Set("Content-Disposition", "attachment; filename="+filepath.Base(treename))
- ctx.Res.Header().Set("Content-Transfer-Encoding", "binary")
- }
- ctx.Res.Write(buf)
- io.Copy(ctx.Res, dataRc)
-}
-
-func ZipDownload(ctx *middleware.Context, params martini.Params) {
- commitId := ctx.Repo.CommitId
- archivesPath := filepath.Join(ctx.Repo.GitRepo.Path, "archives/zip")
- if !com.IsDir(archivesPath) {
- if err := os.MkdirAll(archivesPath, 0755); err != nil {
- ctx.Handle(500, "ZipDownload -> os.Mkdir(archivesPath)", err)
- return
- }
- }
-
- archivePath := filepath.Join(archivesPath, commitId+".zip")
-
- if com.IsFile(archivePath) {
- ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".zip")
- return
- }
-
- if err := ctx.Repo.Commit.CreateArchive(archivePath, git.AT_ZIP); err != nil {
- ctx.Handle(500, "ZipDownload -> CreateArchive "+archivePath, err)
- return
+ ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+path.Base(treename))
+ ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary")
}
-
- ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".zip")
-}
-
-func TarGzDownload(ctx *middleware.Context, params martini.Params) {
- commitId := ctx.Repo.CommitId
- archivesPath := filepath.Join(ctx.Repo.GitRepo.Path, "archives/targz")
- if !com.IsDir(archivesPath) {
- if err := os.MkdirAll(archivesPath, 0755); err != nil {
- ctx.Handle(500, "TarGzDownload -> os.Mkdir(archivesPath)", err)
- return
- }
- }
-
- archivePath := filepath.Join(archivesPath, commitId+".tar.gz")
-
- if com.IsFile(archivePath) {
- ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".tar.gz")
- return
- }
-
- if err := ctx.Repo.Commit.CreateArchive(archivePath, git.AT_TARGZ); err != nil {
- ctx.Handle(500, "TarGzDownload -> CreateArchive "+archivePath, err)
- return
- }
-
- ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".tar.gz")
+ ctx.Resp.Write(buf)
+ io.Copy(ctx.Resp, dataRc)
}