summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/minio/minio-go/api-put-object-copy.go
diff options
context:
space:
mode:
authorMartin Kraft <martinkraft@gmail.com>2018-05-02 07:45:20 -0400
committerMartin Kraft <martinkraft@gmail.com>2018-05-02 07:45:20 -0400
commit7d5e85e4136b0e2e6cf902c48b186d99f0698d13 (patch)
tree84f7256de28eed0fd932f43532c218b385e09642 /vendor/github.com/minio/minio-go/api-put-object-copy.go
parentf4dcb4edf2aafca85c9af631131a77888da24bc7 (diff)
parent529807c1ba0c6b5e697d95d35b46865e22b0e62a (diff)
downloadchat-7d5e85e4136b0e2e6cf902c48b186d99f0698d13.tar.gz
chat-7d5e85e4136b0e2e6cf902c48b186d99f0698d13.tar.bz2
chat-7d5e85e4136b0e2e6cf902c48b186d99f0698d13.zip
Merge remote-tracking branch 'origin/master' into advanced-permissions-phase-2
Diffstat (limited to 'vendor/github.com/minio/minio-go/api-put-object-copy.go')
-rw-r--r--vendor/github.com/minio/minio-go/api-put-object-copy.go36
1 files changed, 35 insertions, 1 deletions
diff --git a/vendor/github.com/minio/minio-go/api-put-object-copy.go b/vendor/github.com/minio/minio-go/api-put-object-copy.go
index 8032009dc..acd195fcd 100644
--- a/vendor/github.com/minio/minio-go/api-put-object-copy.go
+++ b/vendor/github.com/minio/minio-go/api-put-object-copy.go
@@ -17,7 +17,41 @@
package minio
+import (
+ "context"
+ "net/http"
+
+ "github.com/minio/minio-go/pkg/encrypt"
+)
+
// CopyObject - copy a source object into a new object
func (c Client) CopyObject(dst DestinationInfo, src SourceInfo) error {
- return c.ComposeObject(dst, []SourceInfo{src})
+ header := make(http.Header)
+ for k, v := range src.Headers {
+ header[k] = v
+ }
+ if src.encryption != nil {
+ encrypt.SSECopy(src.encryption).Marshal(header)
+ }
+ if dst.encryption != nil {
+ dst.encryption.Marshal(header)
+ }
+ for k, v := range dst.getUserMetaHeadersMap(true) {
+ header.Set(k, v)
+ }
+
+ resp, err := c.executeMethod(context.Background(), "PUT", requestMetadata{
+ bucketName: dst.bucket,
+ objectName: dst.object,
+ customHeader: header,
+ })
+ if err != nil {
+ return err
+ }
+ defer closeResponse(resp)
+
+ if resp.StatusCode != http.StatusOK {
+ return httpRespToErrorResponse(resp, dst.bucket, dst.object)
+ }
+ return nil
}