in oss/copier.go [144:196]
func (c *Copier) newDelegate(ctx context.Context, request *CopyObjectRequest, optFns ...func(*CopierOptions)) (*copierDelegate, error) {
if request == nil {
return nil, NewErrParamNull("request")
}
if request.Bucket == nil {
return nil, NewErrParamNull("request.Bucket")
}
if request.Key == nil {
return nil, NewErrParamNull("request.Key")
}
if request.SourceKey == nil {
return nil, NewErrParamNull("request.SourceKey")
}
if request.MetadataDirective != nil && !isValidCopyDirective(*request.MetadataDirective) {
return nil, NewErrParamInvalid("request.MetadataDirective")
}
if request.TaggingDirective != nil && !isValidCopyDirective(*request.TaggingDirective) {
return nil, NewErrParamInvalid("request.TaggingDirective")
}
d := copierDelegate{
base: c,
options: c.options,
context: ctx,
request: request,
}
for _, opt := range optFns {
opt(&d.options)
}
if d.options.ParallelNum <= 0 {
d.options.ParallelNum = DefaultCopyParallel
}
if d.options.PartSize <= 0 {
d.options.PartSize = DefaultCopyPartSize
}
if d.options.MultipartCopyThreshold < 0 {
d.options.MultipartCopyThreshold = DefaultCopyThreshold
}
d.tagProp = d.options.TagProperties
d.metaProp = d.options.MetadataProperties
return &d, nil
}