diff options
author | Gabriel A. Giovanini <mail@gabrielgio.me> | 2024-06-23 16:32:41 +0200 |
---|---|---|
committer | Gabriel A. Giovanini <mail@gabrielgio.me> | 2024-06-23 16:32:41 +0200 |
commit | 6b96b76d66a929a2b428505809fda23a19005c63 (patch) | |
tree | ef653cddb1c45ff23581cd562a5990626d4129af /pkg/handler/git/handler.go | |
parent | e1664fcbc4685906d3dabc66bf947a17bce7efc0 (diff) | |
download | cerrado-6b96b76d66a929a2b428505809fda23a19005c63.tar.gz cerrado-6b96b76d66a929a2b428505809fda23a19005c63.tar.bz2 cerrado-6b96b76d66a929a2b428505809fda23a19005c63.zip |
fix: Fix bin file not being writen to tar
FileContent was not working for bin file (nor was meant to).
Moving to blob reader solves the issue.
Diffstat (limited to 'pkg/handler/git/handler.go')
-rw-r--r-- | pkg/handler/git/handler.go | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/pkg/handler/git/handler.go b/pkg/handler/git/handler.go index aed9917..8bb4002 100644 --- a/pkg/handler/git/handler.go +++ b/pkg/handler/git/handler.go @@ -39,7 +39,7 @@ type ( GetAbout(name string) (string, error) ListTags(name string) ([]*plumbing.Reference, error) ListBranches(name string) ([]*plumbing.Reference, error) - WriteTarGZip(w io.Writer, name, ref, filename string) error + WriteTarGZip(w io.Writer, name, ref, prefix string) error } configurationRepository interface { @@ -91,30 +91,24 @@ func (g *GitHandler) List(w http.ResponseWriter, _ *http.Request) error { func (g *GitHandler) Archive(w http.ResponseWriter, r *http.Request) error { ext.SetGZip(w) name := r.PathValue("name") - refs := r.PathValue("refs") - ref := strings.TrimSuffix(refs, ".tar.gz") + file := r.PathValue("file") + ref := strings.TrimSuffix(file, ".tar.gz") // TODO: remove it once we can support more than gzip - if !strings.HasSuffix(refs, ".tar.gz") { + if !strings.HasSuffix(file, ".tar.gz") { ext.NotFound(w) return nil } - filenameWithExt := fmt.Sprintf("%s-%s.tar.gz", name, ref) - ext.SetFileName(w, filenameWithExt) - filename := fmt.Sprintf("%s-%s", name, ref) + filename := fmt.Sprintf("%s-%s.tar.gz", name, ref) + ext.SetFileName(w, filename) - // writing to a buffer so we can run all the process before writing error - var buf bytes.Buffer - err := g.gitService.WriteTarGZip(&buf, name, ref, filename) + prefix := fmt.Sprintf("%s-%s", name, ref) + err := g.gitService.WriteTarGZip(w, name, ref, prefix) if err != nil { - return err - } - - // since that has write to w it cannot return a error. - _, err = io.Copy(w, &buf) - if err != nil { - slog.Error("Error copying buffer", "error", err) + // once we start writing to the body we can't report error anymore + // so we are only left with printing the error. + slog.Error("Error generating tar gzip file", "error", err) } return nil |