add file upload to s3 (#1785)
Signed-off-by: yaron2 <schneider.yaron@live.com>
This commit is contained in:
parent
d7eb3b7b27
commit
8728f8a4c9
|
|
@ -21,6 +21,7 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
|
|
@ -37,6 +38,7 @@ import (
|
|||
const (
|
||||
metadataDecodeBase64 = "decodeBase64"
|
||||
metadataEncodeBase64 = "encodeBase64"
|
||||
metadataFilePath = "filePath"
|
||||
|
||||
metadataKey = "key"
|
||||
|
||||
|
|
@ -64,6 +66,7 @@ type s3Metadata struct {
|
|||
ForcePathStyle bool `json:"forcePathStyle,string"`
|
||||
DisableSSL bool `json:"disableSSL,string"`
|
||||
InsecureSSL bool `json:"insecureSSL,string"`
|
||||
FilePath string
|
||||
}
|
||||
|
||||
type createResponse struct {
|
||||
|
|
@ -156,7 +159,17 @@ func (s *AWSS3) create(req *bindings.InvokeRequest) (*bindings.InvokeResponse, e
|
|||
req.Data = decoded
|
||||
}
|
||||
|
||||
r := bytes.NewReader(req.Data)
|
||||
var data []byte
|
||||
if metadata.FilePath != "" {
|
||||
data, err = os.ReadFile(metadata.FilePath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("s3 file read error: %s", err)
|
||||
}
|
||||
} else {
|
||||
data = req.Data
|
||||
}
|
||||
|
||||
r := bytes.NewReader(data)
|
||||
|
||||
resultUpload, err := s.uploader.Upload(&s3manager.UploadInput{
|
||||
Bucket: aws.String(metadata.Bucket),
|
||||
|
|
@ -328,5 +341,9 @@ func (metadata s3Metadata) mergeWithRequestMetadata(req *bindings.InvokeRequest)
|
|||
merged.EncodeBase64 = valBool
|
||||
}
|
||||
|
||||
if val, ok := req.Metadata[metadataFilePath]; ok && val != "" {
|
||||
merged.FilePath = val
|
||||
}
|
||||
|
||||
return merged, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
|
|||
request.Metadata = map[string]string{
|
||||
"decodeBase64": "true",
|
||||
"encodeBase64": "false",
|
||||
"filePath": "/usr/vader.darth",
|
||||
}
|
||||
|
||||
mergedMeta, err := meta.mergeWithRequestMetadata(&request)
|
||||
|
|
@ -80,6 +81,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
|
|||
assert.Equal(t, true, meta.ForcePathStyle)
|
||||
assert.Equal(t, true, mergedMeta.DecodeBase64)
|
||||
assert.Equal(t, false, mergedMeta.EncodeBase64)
|
||||
assert.Equal(t, "/usr/vader.darth", mergedMeta.FilePath)
|
||||
})
|
||||
|
||||
t.Run("Has invalid merged metadata decodeBase64", func(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue