in oss/downloader.go [199:236]
func (d *Downloader) newDelegate(ctx context.Context, request *GetObjectRequest, optFns ...func(*DownloaderOptions)) (*downloaderDelegate, error) {
if request == nil {
return nil, NewErrParamNull("request")
}
if !isValidBucketName(request.Bucket) {
return nil, NewErrParamInvalid("request.Bucket")
}
if !isValidObjectName(request.Key) {
return nil, NewErrParamInvalid("request.Key")
}
if request.Range != nil && !isValidRange(request.Range) {
return nil, NewErrParamInvalid("request.Range")
}
delegate := downloaderDelegate{
base: d,
options: d.options,
client: d.client,
context: ctx,
request: request,
}
for _, opt := range optFns {
opt(&delegate.options)
}
if delegate.options.ParallelNum <= 0 {
delegate.options.ParallelNum = DefaultDownloadParallel
}
if delegate.options.PartSize <= 0 {
delegate.options.PartSize = DefaultDownloadPartSize
}
return &delegate, nil
}