code: func NewS3Uploader(bucket, permission string, quiet bool) (*S3Uploader, error) {
  	u := &url.URL{
  		Scheme: scheme,
  		Host:   fmt.Sprintf("%s.%s", bucket, S3_URL),
  	}
  
  	permission = strings.ToLower(permission)
  	if err := validatePermission(permission); err != nil {
  		return nil, err
  	}
  
  	uploader := &S3Uploader{
  		s3url:      u,
  		bucketName: bucket,
  		permission: permission,
  		out:        os.Stdout,
  	}
  	if quiet {
  		uploader.out = ioutil.Discard
  	}
  	return uploader, nil
  }
docs: // NewS3Uploader configures a new S3 uploader from a uri.