copy method
- Object request,
- String sourceBucket,
- String sourceObject,
- String destinationBucket,
- String destinationObject, {
- String? destinationKmsKeyName,
- String? destinationPredefinedAcl,
- String? ifGenerationMatch,
- String? ifGenerationNotMatch,
- String? ifMetagenerationMatch,
- String? ifMetagenerationNotMatch,
- String? ifSourceGenerationMatch,
- String? ifSourceGenerationNotMatch,
- String? ifSourceMetagenerationMatch,
- String? ifSourceMetagenerationNotMatch,
- String? projection,
- String? sourceGeneration,
- String? userProject,
- String? $fields,
Copies a source object to a destination object.
Optionally overrides metadata.
request
- The metadata request object.
Request parameters:
sourceBucket
- Name of the bucket in which to find the source object.
sourceObject
- Name of the source object. For information about how to
URL encode object names to be path safe, see Encoding URI Path Parts.
destinationBucket
- Name of the bucket in which to store the new object.
Overrides the provided object metadata's bucket value, if any.For
information about how to URL encode object names to be path safe, see
Encoding URI Path Parts.
destinationObject
- Name of the new object. Required when the object
metadata is not otherwise provided. Overrides the object metadata's name
value, if any.
destinationKmsKeyName
- Resource name of the Cloud KMS key, of the form
projects/my-project/locations/global/keyRings/my-kr/cryptoKeys/my-key,
that will be used to encrypt the object. Overrides the object metadata's
kms_key_name value, if any.
destinationPredefinedAcl
- Apply a predefined set of access controls to
the destination object.
Possible string values are:
- "authenticatedRead" : Object owner gets OWNER access, and allAuthenticatedUsers get READER access.
- "bucketOwnerFullControl" : Object owner gets OWNER access, and project team owners get OWNER access.
- "bucketOwnerRead" : Object owner gets OWNER access, and project team owners get READER access.
- "private" : Object owner gets OWNER access.
- "projectPrivate" : Object owner gets OWNER access, and project team members get access according to their roles.
- "publicRead" : Object owner gets OWNER access, and allUsers get READER access.
ifGenerationMatch
- Makes the operation conditional on whether the
destination object's current generation matches the given value. Setting
to 0 makes the operation succeed only if there are no live versions of the
object.
ifGenerationNotMatch
- Makes the operation conditional on whether the
destination object's current generation does not match the given value. If
no live object exists, the precondition fails. Setting to 0 makes the
operation succeed only if there is a live version of the object.
ifMetagenerationMatch
- Makes the operation conditional on whether the
destination object's current metageneration matches the given value.
ifMetagenerationNotMatch
- Makes the operation conditional on whether
the destination object's current metageneration does not match the given
value.
ifSourceGenerationMatch
- Makes the operation conditional on whether the
source object's current generation matches the given value.
ifSourceGenerationNotMatch
- Makes the operation conditional on whether
the source object's current generation does not match the given value.
ifSourceMetagenerationMatch
- Makes the operation conditional on whether
the source object's current metageneration matches the given value.
ifSourceMetagenerationNotMatch
- Makes the operation conditional on
whether the source object's current metageneration does not match the
given value.
projection
- Set of properties to return. Defaults to noAcl, unless the
object resource specifies the acl property, when it defaults to full.
Possible string values are:
- "full" : Include all properties.
- "noAcl" : Omit the owner, acl property.
sourceGeneration
- If present, selects a specific revision of the source
object (as opposed to the latest version, the default).
userProject
- The project to be billed for this request. Required for
Requester Pays buckets.
$fields
- Selector specifying which fields to include in a partial
response.
Completes with a Object.
Completes with a commons.ApiRequestError if the API endpoint returned an error.
If the used http.Client
completes with an error when making a REST call,
this method will complete with the same error.
Implementation
async.Future<Object> copy(
Object request,
core.String sourceBucket,
core.String sourceObject,
core.String destinationBucket,
core.String destinationObject, {
core.String? destinationKmsKeyName,
core.String? destinationPredefinedAcl,
core.String? ifGenerationMatch,
core.String? ifGenerationNotMatch,
core.String? ifMetagenerationMatch,
core.String? ifMetagenerationNotMatch,
core.String? ifSourceGenerationMatch,
core.String? ifSourceGenerationNotMatch,
core.String? ifSourceMetagenerationMatch,
core.String? ifSourceMetagenerationNotMatch,
core.String? projection,
core.String? sourceGeneration,
core.String? userProject,
core.String? $fields,
}) async {
final _body = convert.json.encode(request);
final _queryParams = <core.String, core.List<core.String>>{
if (destinationKmsKeyName != null)
'destinationKmsKeyName': [destinationKmsKeyName],
if (destinationPredefinedAcl != null)
'destinationPredefinedAcl': [destinationPredefinedAcl],
if (ifGenerationMatch != null) 'ifGenerationMatch': [ifGenerationMatch],
if (ifGenerationNotMatch != null)
'ifGenerationNotMatch': [ifGenerationNotMatch],
if (ifMetagenerationMatch != null)
'ifMetagenerationMatch': [ifMetagenerationMatch],
if (ifMetagenerationNotMatch != null)
'ifMetagenerationNotMatch': [ifMetagenerationNotMatch],
if (ifSourceGenerationMatch != null)
'ifSourceGenerationMatch': [ifSourceGenerationMatch],
if (ifSourceGenerationNotMatch != null)
'ifSourceGenerationNotMatch': [ifSourceGenerationNotMatch],
if (ifSourceMetagenerationMatch != null)
'ifSourceMetagenerationMatch': [ifSourceMetagenerationMatch],
if (ifSourceMetagenerationNotMatch != null)
'ifSourceMetagenerationNotMatch': [ifSourceMetagenerationNotMatch],
if (projection != null) 'projection': [projection],
if (sourceGeneration != null) 'sourceGeneration': [sourceGeneration],
if (userProject != null) 'userProject': [userProject],
if ($fields != null) 'fields': [$fields],
};
final _url = 'b/' +
commons.escapeVariable('$sourceBucket') +
'/o/' +
commons.escapeVariable('$sourceObject') +
'/copyTo/b/' +
commons.escapeVariable('$destinationBucket') +
'/o/' +
commons.escapeVariable('$destinationObject');
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return Object.fromJson(_response as core.Map<core.String, core.dynamic>);
}