in oss/copier.go [540:574]
func (d *copierDelegate) overwirteTagProp(imRequest *InitiateMultipartUploadRequest) error {
switch strings.ToLower(ToString(d.request.TaggingDirective)) {
case "", "copy":
imRequest.Tagging = nil
if d.metaProp.TaggingCount > 0 && d.tagProp == nil {
request := &GetObjectTaggingRequest{}
copyRequest(request, d.request)
if d.request.SourceBucket != nil {
request.Bucket = d.request.SourceBucket
}
request.Key = d.request.SourceKey
request.VersionId = d.request.SourceVersionId
result, err := d.base.client.GetObjectTagging(d.context, request, d.options.ClientOptions...)
if err != nil {
return err
}
d.tagProp = result
}
if d.tagProp != nil {
var tags []string
for _, t := range d.tagProp.Tags {
tags = append(tags, fmt.Sprintf("%v=%v", ToString(t.Key), ToString(t.Value)))
}
if len(tags) > 0 {
imRequest.Tagging = Ptr(strings.Join(tags, "&"))
}
}
case "replace":
// the tag has been copied via the copyRequest function before
default:
return fmt.Errorf("Unsupport TaggingDirective, %s", ToString(d.request.TaggingDirective))
}
return nil
}