summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/minio/minio-go/api-put-object-copy.go
diff options
context:
space:
mode:
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
}