aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-03-14 14:08:00 -0700
committerChris Lu <chris.lu@gmail.com>2020-03-14 14:08:00 -0700
commitee635dcc3600ffe2fad8e36f9b79bbc4c3576b3c (patch)
tree2ee1244ca91a64ba35ad592eaff8e2cf9f15c85b
parent18cda6adbb67e9963ffe21856cd152ce0333a0df (diff)
downloadseaweedfs-ee635dcc3600ffe2fad8e36f9b79bbc4c3576b3c.tar.xz
seaweedfs-ee635dcc3600ffe2fad8e36f9b79bbc4c3576b3c.zip
refactoring
-rw-r--r--weed/operation/upload_content.go78
1 files changed, 7 insertions, 71 deletions
diff --git a/weed/operation/upload_content.go b/weed/operation/upload_content.go
index 6806f7cf8..0fc3c37bf 100644
--- a/weed/operation/upload_content.go
+++ b/weed/operation/upload_content.go
@@ -2,7 +2,6 @@ package operation
import (
"bytes"
- "compress/flate"
"crypto/md5"
"encoding/json"
"errors"
@@ -59,80 +58,23 @@ func UploadData(uploadUrl string, filename string, cipher bool, data []byte, isI
func Upload(uploadUrl string, filename string, cipher bool, reader io.Reader, isInputGzipped bool, mtype string, pairMap map[string]string, jwt security.EncodedJwt) (uploadResult *UploadResult, err error) {
hash := md5.New()
reader = io.TeeReader(reader, hash)
- uploadResult, err = doUpload(uploadUrl, filename, cipher, reader, isInputGzipped, mtype, pairMap, flate.BestSpeed, jwt)
+ uploadResult, err = doUpload(uploadUrl, filename, cipher, reader, isInputGzipped, mtype, pairMap, jwt)
if uploadResult != nil {
uploadResult.Md5 = fmt.Sprintf("%x", hash.Sum(nil))
}
return
}
-func doUploadData(uploadUrl string, filename string, cipher bool, data []byte, isInputGzipped bool, mtype string, pairMap map[string]string, jwt security.EncodedJwt) (uploadResult *UploadResult, err error) {
- contentIsGzipped := isInputGzipped
- shouldGzipNow := false
- if !isInputGzipped {
- if shouldBeZipped, iAmSure := util.IsGzippableFileType(filepath.Base(filename), mtype); mtype == "" || iAmSure && shouldBeZipped {
- shouldGzipNow = true
- contentIsGzipped = true
- }
- }
-
- var clearDataLen int
-
- // gzip if possible
- // this could be double copying
- clearDataLen = len(data)
- if shouldGzipNow {
- data, err = util.GzipData(data)
- } else if isInputGzipped {
- // just to get the clear data length
- clearData, err := util.UnGzipData(data)
- if err == nil {
- clearDataLen = len(clearData)
- }
- }
-
- if cipher {
- // encrypt(gzip(data))
-
- // encrypt
- cipherKey := util.GenCipherKey()
- encryptedData, encryptionErr := util.Encrypt(data, cipherKey)
- if encryptionErr != nil {
- err = fmt.Errorf("encrypt input: %v", encryptionErr)
- return
- }
-
- // upload data
- uploadResult, err = upload_content(uploadUrl, func(w io.Writer) (err error) {
- _, err = w.Write(encryptedData)
- return
- }, "", false, "", nil, jwt)
- if uploadResult != nil {
- uploadResult.Name = filename
- uploadResult.Mime = mtype
- uploadResult.CipherKey = cipherKey
- }
- } else {
- // upload data
- uploadResult, err = upload_content(uploadUrl, func(w io.Writer) (err error) {
- _, err = w.Write(data)
- return
- }, filename, contentIsGzipped, mtype, pairMap, jwt)
- }
-
- if uploadResult == nil {
+func doUpload(uploadUrl string, filename string, cipher bool, reader io.Reader, isInputGzipped bool, mtype string, pairMap map[string]string, jwt security.EncodedJwt) (uploadResult *UploadResult, err error) {
+ data, readErr := ioutil.ReadAll(reader)
+ if readErr != nil {
+ err = fmt.Errorf("read input: %v", readErr)
return
}
-
- uploadResult.Size = uint32(clearDataLen)
- if contentIsGzipped {
- uploadResult.Gzip = 1
- }
-
- return uploadResult, err
+ return doUploadData(uploadUrl, filename, cipher, data, isInputGzipped, mtype, pairMap, jwt)
}
-func doUpload(uploadUrl string, filename string, cipher bool, reader io.Reader, isInputGzipped bool, mtype string, pairMap map[string]string, compression int, jwt security.EncodedJwt) (uploadResult *UploadResult, err error) {
+func doUploadData(uploadUrl string, filename string, cipher bool, data []byte, isInputGzipped bool, mtype string, pairMap map[string]string, jwt security.EncodedJwt) (uploadResult *UploadResult, err error) {
contentIsGzipped := isInputGzipped
shouldGzipNow := false
if !isInputGzipped {
@@ -146,11 +88,6 @@ func doUpload(uploadUrl string, filename string, cipher bool, reader io.Reader,
// gzip if possible
// this could be double copying
- data, readErr := ioutil.ReadAll(reader)
- if readErr != nil {
- err = fmt.Errorf("read input: %v", readErr)
- return
- }
clearDataLen = len(data)
if shouldGzipNow {
data, err = util.GzipData(data)
@@ -182,7 +119,6 @@ func doUpload(uploadUrl string, filename string, cipher bool, reader io.Reader,
uploadResult.Name = filename
uploadResult.Mime = mtype
uploadResult.CipherKey = cipherKey
- uploadResult.Size = uint32(clearDataLen)
}
} else {
// upload data