diff options
Diffstat (limited to 'routes/repo/download.go')
-rw-r--r-- | routes/repo/download.go | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/routes/repo/download.go b/routes/repo/download.go deleted file mode 100644 index 9b90a017..00000000 --- a/routes/repo/download.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package repo - -import ( - "fmt" - "io" - "net/http" - "path" - - "github.com/gogs/git-module" - - "gogs.io/gogs/pkg/context" - "gogs.io/gogs/pkg/setting" - "gogs.io/gogs/pkg/tool" -) - -func ServeData(c *context.Context, name string, reader io.Reader) error { - buf := make([]byte, 1024) - n, _ := reader.Read(buf) - if n >= 0 { - buf = buf[:n] - } - - commit, err := c.Repo.Commit.GetCommitByPath(c.Repo.TreePath) - if err != nil { - return fmt.Errorf("GetCommitByPath: %v", err) - } - c.Resp.Header().Set("Last-Modified", commit.Committer.When.Format(http.TimeFormat)) - - if !tool.IsTextFile(buf) { - if !tool.IsImageFile(buf) { - c.Resp.Header().Set("Content-Disposition", "attachment; filename=\""+name+"\"") - c.Resp.Header().Set("Content-Transfer-Encoding", "binary") - } - } else if !setting.Repository.EnableRawFileRenderMode || !c.QueryBool("render") { - c.Resp.Header().Set("Content-Type", "text/plain; charset=utf-8") - } - c.Resp.Write(buf) - _, err = io.Copy(c.Resp, reader) - return err -} - -func ServeBlob(c *context.Context, blob *git.Blob) error { - dataRc, err := blob.Data() - if err != nil { - return err - } - - return ServeData(c, path.Base(c.Repo.TreePath), dataRc) -} - -func SingleDownload(c *context.Context) { - blob, err := c.Repo.Commit.GetBlobByPath(c.Repo.TreePath) - if err != nil { - if git.IsErrNotExist(err) { - c.Handle(404, "GetBlobByPath", nil) - } else { - c.Handle(500, "GetBlobByPath", err) - } - return - } - if err = ServeBlob(c, blob); err != nil { - c.Handle(500, "ServeBlob", err) - } -} |