code: func New(params DriverParameters) (*Driver, error) {
  
  	client := oss.NewOSSClient(params.Region, params.Internal, params.AccessKeyID, params.AccessKeySecret, params.Secure)
  	client.SetEndpoint(params.Endpoint)
  	bucket := client.Bucket(params.Bucket)
  	client.SetDebug(false)
  
  	// Validate that the given credentials have at least read permissions in the
  	// given bucket scope.
  	if _, err := bucket.List(strings.TrimRight(params.RootDirectory, "/"), "", "", 1); err != nil {
  		return nil, err
  	}
  
  	// TODO(tg123): Currently multipart uploads have no timestamps, so this would be unwise
  	// if you initiated a new OSS client while another one is running on the same bucket.
  
  	d := &driver{
  		Client:          client,
  		Bucket:          bucket,
  		ChunkSize:       params.ChunkSize,
  		Encrypt:         params.Encrypt,
  		RootDirectory:   params.RootDirectory,
  		EncryptionKeyID: params.EncryptionKeyID,
  	}
  
  	return &Driver{
  		baseEmbed: baseEmbed{
  			Base: base.Base{
  				StorageDriver: d,
  			},
  		},
  	}, nil
  }
docs: // New constructs a new Driver with the given Aliyun credentials, region, encryption flag, and
  // bucketName