diff options
Diffstat (limited to 'weed/s3api/s3api_object_copy_handlers.go')
| -rw-r--r-- | weed/s3api/s3api_object_copy_handlers.go | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/weed/s3api/s3api_object_copy_handlers.go b/weed/s3api/s3api_object_copy_handlers.go index 23c278f7b..9157748f6 100644 --- a/weed/s3api/s3api_object_copy_handlers.go +++ b/weed/s3api/s3api_object_copy_handlers.go @@ -3,8 +3,7 @@ package s3api import ( "fmt" "github.com/chrislusf/seaweedfs/weed/glog" - headers "github.com/chrislusf/seaweedfs/weed/s3api/http" - xhttp "github.com/chrislusf/seaweedfs/weed/s3api/http" + "github.com/chrislusf/seaweedfs/weed/s3api/s3_constants" "github.com/chrislusf/seaweedfs/weed/s3api/s3err" "modernc.org/strutil" "net/http" @@ -23,7 +22,7 @@ const ( func (s3a *S3ApiServer) CopyObjectHandler(w http.ResponseWriter, r *http.Request) { - dstBucket, dstObject := xhttp.GetBucketAndObject(r) + dstBucket, dstObject := s3_constants.GetBucketAndObject(r) // Copy source path. cpSrcPath, err := url.QueryUnescape(r.Header.Get("X-Amz-Copy-Source")) @@ -130,7 +129,7 @@ type CopyPartResult struct { func (s3a *S3ApiServer) CopyObjectPartHandler(w http.ResponseWriter, r *http.Request) { // https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html // https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html - dstBucket, dstObject := xhttp.GetBucketAndObject(r) + dstBucket, dstObject := s3_constants.GetBucketAndObject(r) // Copy source path. cpSrcPath, err := url.QueryUnescape(r.Header.Get("X-Amz-Copy-Source")) @@ -198,24 +197,24 @@ func (s3a *S3ApiServer) CopyObjectPartHandler(w http.ResponseWriter, r *http.Req } func replaceDirective(reqHeader http.Header) (replaceMeta, replaceTagging bool) { - return reqHeader.Get(headers.AmzUserMetaDirective) == DirectiveReplace, reqHeader.Get(headers.AmzObjectTaggingDirective) == DirectiveReplace + return reqHeader.Get(s3_constants.AmzUserMetaDirective) == DirectiveReplace, reqHeader.Get(s3_constants.AmzObjectTaggingDirective) == DirectiveReplace } func processMetadata(reqHeader, existing http.Header, replaceMeta, replaceTagging bool, getTags func(parentDirectoryPath string, entryName string) (tags map[string]string, err error), dir, name string) (err error) { - if sc := reqHeader.Get(xhttp.AmzStorageClass); len(sc) == 0 { - if sc := existing[xhttp.AmzStorageClass]; len(sc) > 0 { - reqHeader[xhttp.AmzStorageClass] = sc + if sc := reqHeader.Get(s3_constants.AmzStorageClass); len(sc) == 0 { + if sc := existing[s3_constants.AmzStorageClass]; len(sc) > 0 { + reqHeader[s3_constants.AmzStorageClass] = sc } } if !replaceMeta { for header, _ := range reqHeader { - if strings.HasPrefix(header, xhttp.AmzUserMetaPrefix) { + if strings.HasPrefix(header, s3_constants.AmzUserMetaPrefix) { delete(reqHeader, header) } } for k, v := range existing { - if strings.HasPrefix(k, xhttp.AmzUserMetaPrefix) { + if strings.HasPrefix(k, s3_constants.AmzUserMetaPrefix) { reqHeader[k] = v } } @@ -223,14 +222,14 @@ func processMetadata(reqHeader, existing http.Header, replaceMeta, replaceTaggin if !replaceTagging { for header, _ := range reqHeader { - if strings.HasPrefix(header, xhttp.AmzObjectTagging) { + if strings.HasPrefix(header, s3_constants.AmzObjectTagging) { delete(reqHeader, header) } } found := false for k, _ := range existing { - if strings.HasPrefix(k, xhttp.AmzObjectTaggingPrefix) { + if strings.HasPrefix(k, s3_constants.AmzObjectTaggingPrefix) { found = true break } @@ -247,7 +246,7 @@ func processMetadata(reqHeader, existing http.Header, replaceMeta, replaceTaggin tagArr = append(tagArr, fmt.Sprintf("%s=%s", k, v)) } tagStr := strutil.JoinFields(tagArr, "&") - reqHeader.Set(xhttp.AmzObjectTagging, tagStr) + reqHeader.Set(s3_constants.AmzObjectTagging, tagStr) } } return @@ -256,16 +255,16 @@ func processMetadata(reqHeader, existing http.Header, replaceMeta, replaceTaggin func processMetadataBytes(reqHeader http.Header, existing map[string][]byte, replaceMeta, replaceTagging bool) (metadata map[string][]byte) { metadata = make(map[string][]byte) - if sc := existing[xhttp.AmzStorageClass]; len(sc) > 0 { - metadata[xhttp.AmzStorageClass] = sc + if sc := existing[s3_constants.AmzStorageClass]; len(sc) > 0 { + metadata[s3_constants.AmzStorageClass] = sc } - if sc := reqHeader.Get(xhttp.AmzStorageClass); len(sc) > 0 { - metadata[xhttp.AmzStorageClass] = []byte(sc) + if sc := reqHeader.Get(s3_constants.AmzStorageClass); len(sc) > 0 { + metadata[s3_constants.AmzStorageClass] = []byte(sc) } if replaceMeta { for header, values := range reqHeader { - if strings.HasPrefix(header, xhttp.AmzUserMetaPrefix) { + if strings.HasPrefix(header, s3_constants.AmzUserMetaPrefix) { for _, value := range values { metadata[header] = []byte(value) } @@ -273,30 +272,30 @@ func processMetadataBytes(reqHeader http.Header, existing map[string][]byte, rep } } else { for k, v := range existing { - if strings.HasPrefix(k, xhttp.AmzUserMetaPrefix) { + if strings.HasPrefix(k, s3_constants.AmzUserMetaPrefix) { metadata[k] = v } } } if replaceTagging { - if tags := reqHeader.Get(xhttp.AmzObjectTagging); tags != "" { + if tags := reqHeader.Get(s3_constants.AmzObjectTagging); tags != "" { for _, v := range strings.Split(tags, "&") { tag := strings.Split(v, "=") if len(tag) == 2 { - metadata[xhttp.AmzObjectTagging+"-"+tag[0]] = []byte(tag[1]) + metadata[s3_constants.AmzObjectTagging+"-"+tag[0]] = []byte(tag[1]) } else if len(tag) == 1 { - metadata[xhttp.AmzObjectTagging+"-"+tag[0]] = nil + metadata[s3_constants.AmzObjectTagging+"-"+tag[0]] = nil } } } } else { for k, v := range existing { - if strings.HasPrefix(k, xhttp.AmzObjectTagging) { + if strings.HasPrefix(k, s3_constants.AmzObjectTagging) { metadata[k] = v } } - delete(metadata, xhttp.AmzTagCount) + delete(metadata, s3_constants.AmzTagCount) } return |
