diff options
author | Richard Mahn <richmahn@users.noreply.github.com> | 2019-04-17 10:06:35 -0600 |
---|---|---|
committer | techknowlogick <matti@mdranta.net> | 2019-04-17 12:06:35 -0400 |
commit | 2262811e407facea09047e94aa1850c192511587 (patch) | |
tree | a478624613dc6cf095784d629f9627b197de15e8 /modules/git/blob.go | |
parent | 059195b127848d96a4690257af19d8c97c6d2363 (diff) | |
download | gitea-2262811e407facea09047e94aa1850c192511587.tar.gz gitea-2262811e407facea09047e94aa1850c192511587.zip |
Fixes 4762 - Content API for Creating, Updating, Deleting Files (#6314)
Diffstat (limited to 'modules/git/blob.go')
-rw-r--r-- | modules/git/blob.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/modules/git/blob.go b/modules/git/blob.go index a6e392eeb5..e194b973db 100644 --- a/modules/git/blob.go +++ b/modules/git/blob.go @@ -6,6 +6,7 @@ package git import ( "bytes" + "encoding/base64" "fmt" "io" "io/ioutil" @@ -71,3 +72,32 @@ func (b *Blob) DataAsync() (io.ReadCloser, error) { return cmdReadCloser{stdout: stdout, cmd: cmd}, nil } + +// GetBlobContentBase64 Reads the content of the blob with a base64 encode and returns the encoded string +func (b *Blob) GetBlobContentBase64() (string, error) { + dataRc, err := b.DataAsync() + if err != nil { + return "", err + } + defer dataRc.Close() + + pr, pw := io.Pipe() + encoder := base64.NewEncoder(base64.StdEncoding, pw) + + go func() { + _, err := io.Copy(encoder, dataRc) + encoder.Close() + + if err != nil { + pw.CloseWithError(err) + } else { + pw.Close() + } + }() + + out, err := ioutil.ReadAll(pr) + if err != nil { + return "", err + } + return string(out), nil +} |