func()

in oss/copier.go [497:538]


func (d *copierDelegate) overwirteMetadataProp(imRequest *InitiateMultipartUploadRequest) error {
	copyRequest := d.request
	switch strings.ToLower(ToString(copyRequest.MetadataDirective)) {
	case "", "copy":
		if d.metaProp == nil {
			return fmt.Errorf("request.MetadataDirective is COPY, but meets nil metaProp for source")
		}
		imRequest.CacheControl = nil
		imRequest.ContentType = nil
		imRequest.ContentDisposition = nil
		imRequest.ContentEncoding = nil
		imRequest.Expires = nil
		imRequest.Metadata = nil
		imRequest.Headers = map[string]string{}
		// skip meta in Headers
		for k, v := range d.request.Headers {
			lowK := strings.ToLower(k)
			if strings.HasPrefix(lowK, "x-oss-meta") {
				//skip
			} else if _, ok := metadataCopied[lowK]; ok {
				//skip
			} else {
				imRequest.Headers[k] = v
			}
		}
		// copy meta form source
		for k, v := range d.metaProp.Headers {
			lowK := strings.ToLower(k)
			if strings.HasPrefix(lowK, "x-oss-meta") {
				imRequest.Headers[lowK] = v[0]
			} else if _, ok := metadataCopied[lowK]; ok {
				imRequest.Headers[lowK] = v[0]
			}
		}
	case "replace":
		// the metedata has been copied via the copyRequest function before
	default:
		return fmt.Errorf("Unsupport MetadataDirective, %s", ToString(d.request.MetadataDirective))
	}

	return nil
}