func()

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
}