Struct google_api_proto::google::storage::v2::storage_client::StorageClient
source · pub struct StorageClient<T> { /* private fields */ }
Expand description
§API Overview and Naming Syntax
The Cloud Storage gRPC API allows applications to read and write data through the abstractions of buckets and objects. For a description of these abstractions please see https://cloud.google.com/storage/docs.
Resources are named as follows:
-
Projects are referred to as they are defined by the Resource Manager API, using strings like
projects/123456
orprojects/my-string-id
. -
Buckets are named using string names of the form:
projects/{project}/buckets/{bucket}
For globally unique buckets,_
may be substituted for the project. -
Objects are uniquely identified by their name along with the name of the bucket they belong to, as separate strings in this API. For example:
ReadObjectRequest { bucket: ‘projects/_/buckets/my-bucket’ object: ‘my-object’ } Note that object names can contain
/
characters, which are treated as any other character (no special directory semantics).
Implementations§
source§impl<T> StorageClient<T>where
T: GrpcService<BoxBody>,
T::Error: Into<StdError>,
T::ResponseBody: Body<Data = Bytes> + Send + 'static,
<T::ResponseBody as Body>::Error: Into<StdError> + Send,
impl<T> StorageClient<T>where
T: GrpcService<BoxBody>,
T::Error: Into<StdError>,
T::ResponseBody: Body<Data = Bytes> + Send + 'static,
<T::ResponseBody as Body>::Error: Into<StdError> + Send,
pub fn new(inner: T) -> Self
pub fn with_origin(inner: T, origin: Uri) -> Self
pub fn with_interceptor<F>(
inner: T,
interceptor: F,
) -> StorageClient<InterceptedService<T, F>>where
F: Interceptor,
T::ResponseBody: Default,
T: Service<Request<BoxBody>, Response = Response<<T as GrpcService<BoxBody>>::ResponseBody>>,
<T as Service<Request<BoxBody>>>::Error: Into<StdError> + Send + Sync,
sourcepub fn send_compressed(self, encoding: CompressionEncoding) -> Self
pub fn send_compressed(self, encoding: CompressionEncoding) -> Self
Compress requests with the given encoding.
This requires the server to support it otherwise it might respond with an error.
sourcepub fn accept_compressed(self, encoding: CompressionEncoding) -> Self
pub fn accept_compressed(self, encoding: CompressionEncoding) -> Self
Enable decompressing responses.
sourcepub fn max_decoding_message_size(self, limit: usize) -> Self
pub fn max_decoding_message_size(self, limit: usize) -> Self
Limits the maximum size of a decoded message.
Default: 4MB
sourcepub fn max_encoding_message_size(self, limit: usize) -> Self
pub fn max_encoding_message_size(self, limit: usize) -> Self
Limits the maximum size of an encoded message.
Default: usize::MAX
sourcepub async fn delete_bucket(
&mut self,
request: impl IntoRequest<DeleteBucketRequest>,
) -> Result<Response<()>, Status>
pub async fn delete_bucket( &mut self, request: impl IntoRequest<DeleteBucketRequest>, ) -> Result<Response<()>, Status>
Permanently deletes an empty bucket.
sourcepub async fn get_bucket(
&mut self,
request: impl IntoRequest<GetBucketRequest>,
) -> Result<Response<Bucket>, Status>
pub async fn get_bucket( &mut self, request: impl IntoRequest<GetBucketRequest>, ) -> Result<Response<Bucket>, Status>
Returns metadata for the specified bucket.
sourcepub async fn create_bucket(
&mut self,
request: impl IntoRequest<CreateBucketRequest>,
) -> Result<Response<Bucket>, Status>
pub async fn create_bucket( &mut self, request: impl IntoRequest<CreateBucketRequest>, ) -> Result<Response<Bucket>, Status>
Creates a new bucket.
sourcepub async fn list_buckets(
&mut self,
request: impl IntoRequest<ListBucketsRequest>,
) -> Result<Response<ListBucketsResponse>, Status>
pub async fn list_buckets( &mut self, request: impl IntoRequest<ListBucketsRequest>, ) -> Result<Response<ListBucketsResponse>, Status>
Retrieves a list of buckets for a given project.
sourcepub async fn lock_bucket_retention_policy(
&mut self,
request: impl IntoRequest<LockBucketRetentionPolicyRequest>,
) -> Result<Response<Bucket>, Status>
pub async fn lock_bucket_retention_policy( &mut self, request: impl IntoRequest<LockBucketRetentionPolicyRequest>, ) -> Result<Response<Bucket>, Status>
Locks retention policy on a bucket.
sourcepub async fn get_iam_policy(
&mut self,
request: impl IntoRequest<GetIamPolicyRequest>,
) -> Result<Response<Policy>, Status>
pub async fn get_iam_policy( &mut self, request: impl IntoRequest<GetIamPolicyRequest>, ) -> Result<Response<Policy>, Status>
Gets the IAM policy for a specified bucket.
The resource
field in the request should be
projects/_/buckets/{bucket}
.
sourcepub async fn set_iam_policy(
&mut self,
request: impl IntoRequest<SetIamPolicyRequest>,
) -> Result<Response<Policy>, Status>
pub async fn set_iam_policy( &mut self, request: impl IntoRequest<SetIamPolicyRequest>, ) -> Result<Response<Policy>, Status>
Updates an IAM policy for the specified bucket.
The resource
field in the request should be
projects/_/buckets/{bucket}
.
sourcepub async fn test_iam_permissions(
&mut self,
request: impl IntoRequest<TestIamPermissionsRequest>,
) -> Result<Response<TestIamPermissionsResponse>, Status>
pub async fn test_iam_permissions( &mut self, request: impl IntoRequest<TestIamPermissionsRequest>, ) -> Result<Response<TestIamPermissionsResponse>, Status>
Tests a set of permissions on the given bucket or object to see which, if
any, are held by the caller.
The resource
field in the request should be
projects/_/buckets/{bucket}
for a bucket or
projects/_/buckets/{bucket}/objects/{object}
for an object.
sourcepub async fn update_bucket(
&mut self,
request: impl IntoRequest<UpdateBucketRequest>,
) -> Result<Response<Bucket>, Status>
pub async fn update_bucket( &mut self, request: impl IntoRequest<UpdateBucketRequest>, ) -> Result<Response<Bucket>, Status>
Updates a bucket. Equivalent to JSON API’s storage.buckets.patch method.
sourcepub async fn delete_notification_config(
&mut self,
request: impl IntoRequest<DeleteNotificationConfigRequest>,
) -> Result<Response<()>, Status>
pub async fn delete_notification_config( &mut self, request: impl IntoRequest<DeleteNotificationConfigRequest>, ) -> Result<Response<()>, Status>
Permanently deletes a NotificationConfig.
sourcepub async fn get_notification_config(
&mut self,
request: impl IntoRequest<GetNotificationConfigRequest>,
) -> Result<Response<NotificationConfig>, Status>
pub async fn get_notification_config( &mut self, request: impl IntoRequest<GetNotificationConfigRequest>, ) -> Result<Response<NotificationConfig>, Status>
View a NotificationConfig.
sourcepub async fn create_notification_config(
&mut self,
request: impl IntoRequest<CreateNotificationConfigRequest>,
) -> Result<Response<NotificationConfig>, Status>
pub async fn create_notification_config( &mut self, request: impl IntoRequest<CreateNotificationConfigRequest>, ) -> Result<Response<NotificationConfig>, Status>
Creates a NotificationConfig for a given bucket. These NotificationConfigs, when triggered, publish messages to the specified Pub/Sub topics. See https://cloud.google.com/storage/docs/pubsub-notifications.
sourcepub async fn list_notification_configs(
&mut self,
request: impl IntoRequest<ListNotificationConfigsRequest>,
) -> Result<Response<ListNotificationConfigsResponse>, Status>
pub async fn list_notification_configs( &mut self, request: impl IntoRequest<ListNotificationConfigsRequest>, ) -> Result<Response<ListNotificationConfigsResponse>, Status>
Retrieves a list of NotificationConfigs for a given bucket.
sourcepub async fn compose_object(
&mut self,
request: impl IntoRequest<ComposeObjectRequest>,
) -> Result<Response<Object>, Status>
pub async fn compose_object( &mut self, request: impl IntoRequest<ComposeObjectRequest>, ) -> Result<Response<Object>, Status>
Concatenates a list of existing objects into a new object in the same bucket.
sourcepub async fn delete_object(
&mut self,
request: impl IntoRequest<DeleteObjectRequest>,
) -> Result<Response<()>, Status>
pub async fn delete_object( &mut self, request: impl IntoRequest<DeleteObjectRequest>, ) -> Result<Response<()>, Status>
Deletes an object and its metadata.
Deletions are normally permanent when versioning is disabled or whenever the generation parameter is used. However, if soft delete is enabled for the bucket, deleted objects can be restored using RestoreObject until the soft delete retention period has passed.
sourcepub async fn restore_object(
&mut self,
request: impl IntoRequest<RestoreObjectRequest>,
) -> Result<Response<Object>, Status>
pub async fn restore_object( &mut self, request: impl IntoRequest<RestoreObjectRequest>, ) -> Result<Response<Object>, Status>
Restores a soft-deleted object.
sourcepub async fn cancel_resumable_write(
&mut self,
request: impl IntoRequest<CancelResumableWriteRequest>,
) -> Result<Response<CancelResumableWriteResponse>, Status>
pub async fn cancel_resumable_write( &mut self, request: impl IntoRequest<CancelResumableWriteRequest>, ) -> Result<Response<CancelResumableWriteResponse>, Status>
Cancels an in-progress resumable upload.
Any attempts to write to the resumable upload after cancelling the upload will fail.
The behavior for currently in progress write operations is not guaranteed - they could either complete before the cancellation or fail if the cancellation completes first.
sourcepub async fn get_object(
&mut self,
request: impl IntoRequest<GetObjectRequest>,
) -> Result<Response<Object>, Status>
pub async fn get_object( &mut self, request: impl IntoRequest<GetObjectRequest>, ) -> Result<Response<Object>, Status>
Retrieves an object’s metadata.
sourcepub async fn read_object(
&mut self,
request: impl IntoRequest<ReadObjectRequest>,
) -> Result<Response<Streaming<ReadObjectResponse>>, Status>
pub async fn read_object( &mut self, request: impl IntoRequest<ReadObjectRequest>, ) -> Result<Response<Streaming<ReadObjectResponse>>, Status>
Reads an object’s data.
sourcepub async fn update_object(
&mut self,
request: impl IntoRequest<UpdateObjectRequest>,
) -> Result<Response<Object>, Status>
pub async fn update_object( &mut self, request: impl IntoRequest<UpdateObjectRequest>, ) -> Result<Response<Object>, Status>
Updates an object’s metadata. Equivalent to JSON API’s storage.objects.patch.
sourcepub async fn write_object(
&mut self,
request: impl IntoStreamingRequest<Message = WriteObjectRequest>,
) -> Result<Response<WriteObjectResponse>, Status>
pub async fn write_object( &mut self, request: impl IntoStreamingRequest<Message = WriteObjectRequest>, ) -> Result<Response<WriteObjectResponse>, Status>
Stores a new object and metadata.
An object can be written either in a single message stream or in a
resumable sequence of message streams. To write using a single stream,
the client should include in the first message of the stream an
WriteObjectSpec
describing the destination bucket, object, and any
preconditions. Additionally, the final message must set ‘finish_write’ to
true, or else it is an error.
For a resumable write, the client should instead call
StartResumableWrite()
, populating a WriteObjectSpec
into that request.
They should then attach the returned upload_id
to the first message of
each following call to WriteObject
. If the stream is closed before
finishing the upload (either explicitly by the client or due to a network
error or an error response from the server), the client should do as
follows:
- Check the result Status of the stream, to determine if writing can be
resumed on this stream or must be restarted from scratch (by calling
StartResumableWrite()
). The resumable errors are DEADLINE_EXCEEDED, INTERNAL, and UNAVAILABLE. For each case, the client should use binary exponential backoff before retrying. Additionally, writes can be resumed after RESOURCE_EXHAUSTED errors, but only after taking appropriate measures, which may include reducing aggregate send rate across clients and/or requesting a quota increase for your project. - If the call to
WriteObject
returnsABORTED
, that indicates concurrent attempts to update the resumable write, caused either by multiple racing clients or by a single client where the previous request was timed out on the client side but nonetheless reached the server. In this case the client should take steps to prevent further concurrent writes (e.g., increase the timeouts, stop using more than one process to perform the upload, etc.), and then should follow the steps below for resuming the upload. - For resumable errors, the client should call
QueryWriteStatus()
and then continue writing from the returnedpersisted_size
. This may be less than the amount of data the client previously sent. Note also that it is acceptable to send data starting at an offset earlier than the returnedpersisted_size
; in this case, the service will skip data at offsets that were already persisted (without checking that it matches the previously written data), and write only the data starting from the persisted offset. Even though the data isn’t written, it may still incur a performance cost over resuming at the correct write offset. This behavior can make client-side handling simpler in some cases. - Clients must only send data that is a multiple of 256 KiB per message,
unless the object is being finished with
finish_write
set totrue
.
The service will not view the object as complete until the client has
sent a WriteObjectRequest
with finish_write
set to true
. Sending any
requests on a stream after sending a request with finish_write
set to
true
will cause an error. The client should check the response it
receives to determine how much data the service was able to commit and
whether the service views the object as complete.
Attempting to resume an already finalized object will result in an OK status, with a WriteObjectResponse containing the finalized object’s metadata.
Alternatively, the BidiWriteObject operation may be used to write an object with controls over flushing and the ability to fetch the ability to determine the current persisted size.
sourcepub async fn bidi_write_object(
&mut self,
request: impl IntoStreamingRequest<Message = BidiWriteObjectRequest>,
) -> Result<Response<Streaming<BidiWriteObjectResponse>>, Status>
pub async fn bidi_write_object( &mut self, request: impl IntoStreamingRequest<Message = BidiWriteObjectRequest>, ) -> Result<Response<Streaming<BidiWriteObjectResponse>>, Status>
Stores a new object and metadata.
This is similar to the WriteObject call with the added support for manual flushing of persisted state, and the ability to determine current persisted size without closing the stream.
The client may specify one or both of the state_lookup
and flush
fields
in each BidiWriteObjectRequest. If flush
is specified, the data written
so far will be persisted to storage. If state_lookup
is specified, the
service will respond with a BidiWriteObjectResponse that contains the
persisted size. If both flush
and state_lookup
are specified, the flush
will always occur before a state_lookup
, so that both may be set in the
same request and the returned state will be the state of the object
post-flush. When the stream is closed, a BidiWriteObjectResponse will
always be sent to the client, regardless of the value of state_lookup
.
sourcepub async fn list_objects(
&mut self,
request: impl IntoRequest<ListObjectsRequest>,
) -> Result<Response<ListObjectsResponse>, Status>
pub async fn list_objects( &mut self, request: impl IntoRequest<ListObjectsRequest>, ) -> Result<Response<ListObjectsResponse>, Status>
Retrieves a list of objects matching the criteria.
sourcepub async fn rewrite_object(
&mut self,
request: impl IntoRequest<RewriteObjectRequest>,
) -> Result<Response<RewriteResponse>, Status>
pub async fn rewrite_object( &mut self, request: impl IntoRequest<RewriteObjectRequest>, ) -> Result<Response<RewriteResponse>, Status>
Rewrites a source object to a destination object. Optionally overrides metadata.
sourcepub async fn start_resumable_write(
&mut self,
request: impl IntoRequest<StartResumableWriteRequest>,
) -> Result<Response<StartResumableWriteResponse>, Status>
pub async fn start_resumable_write( &mut self, request: impl IntoRequest<StartResumableWriteRequest>, ) -> Result<Response<StartResumableWriteResponse>, Status>
Starts a resumable write. How long the write operation remains valid, and what happens when the write operation becomes invalid, are service-dependent.
sourcepub async fn query_write_status(
&mut self,
request: impl IntoRequest<QueryWriteStatusRequest>,
) -> Result<Response<QueryWriteStatusResponse>, Status>
pub async fn query_write_status( &mut self, request: impl IntoRequest<QueryWriteStatusRequest>, ) -> Result<Response<QueryWriteStatusResponse>, Status>
Determines the persisted_size
for an object that is being written, which
can then be used as the write_offset
for the next Write()
call.
If the object does not exist (i.e., the object has been deleted, or the
first Write()
has not yet reached the service), this method returns the
error NOT_FOUND
.
The client may call QueryWriteStatus()
at any time to determine how
much data has been processed for this object. This is useful if the
client is buffering data and needs to know which data can be safely
evicted. For any sequence of QueryWriteStatus()
calls for a given
object name, the sequence of returned persisted_size
values will be
non-decreasing.
sourcepub async fn get_service_account(
&mut self,
request: impl IntoRequest<GetServiceAccountRequest>,
) -> Result<Response<ServiceAccount>, Status>
pub async fn get_service_account( &mut self, request: impl IntoRequest<GetServiceAccountRequest>, ) -> Result<Response<ServiceAccount>, Status>
Retrieves the name of a project’s Google Cloud Storage service account.
sourcepub async fn create_hmac_key(
&mut self,
request: impl IntoRequest<CreateHmacKeyRequest>,
) -> Result<Response<CreateHmacKeyResponse>, Status>
pub async fn create_hmac_key( &mut self, request: impl IntoRequest<CreateHmacKeyRequest>, ) -> Result<Response<CreateHmacKeyResponse>, Status>
Creates a new HMAC key for the given service account.
sourcepub async fn delete_hmac_key(
&mut self,
request: impl IntoRequest<DeleteHmacKeyRequest>,
) -> Result<Response<()>, Status>
pub async fn delete_hmac_key( &mut self, request: impl IntoRequest<DeleteHmacKeyRequest>, ) -> Result<Response<()>, Status>
Deletes a given HMAC key. Key must be in an INACTIVE state.
sourcepub async fn get_hmac_key(
&mut self,
request: impl IntoRequest<GetHmacKeyRequest>,
) -> Result<Response<HmacKeyMetadata>, Status>
pub async fn get_hmac_key( &mut self, request: impl IntoRequest<GetHmacKeyRequest>, ) -> Result<Response<HmacKeyMetadata>, Status>
Gets an existing HMAC key metadata for the given id.
sourcepub async fn list_hmac_keys(
&mut self,
request: impl IntoRequest<ListHmacKeysRequest>,
) -> Result<Response<ListHmacKeysResponse>, Status>
pub async fn list_hmac_keys( &mut self, request: impl IntoRequest<ListHmacKeysRequest>, ) -> Result<Response<ListHmacKeysResponse>, Status>
Lists HMAC keys under a given project with the additional filters provided.
sourcepub async fn update_hmac_key(
&mut self,
request: impl IntoRequest<UpdateHmacKeyRequest>,
) -> Result<Response<HmacKeyMetadata>, Status>
pub async fn update_hmac_key( &mut self, request: impl IntoRequest<UpdateHmacKeyRequest>, ) -> Result<Response<HmacKeyMetadata>, Status>
Updates a given HMAC key state between ACTIVE and INACTIVE.
Trait Implementations§
source§impl<T: Clone> Clone for StorageClient<T>
impl<T: Clone> Clone for StorageClient<T>
source§fn clone(&self) -> StorageClient<T>
fn clone(&self) -> StorageClient<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<T> !Freeze for StorageClient<T>
impl<T> RefUnwindSafe for StorageClient<T>where
T: RefUnwindSafe,
impl<T> Send for StorageClient<T>where
T: Send,
impl<T> Sync for StorageClient<T>where
T: Sync,
impl<T> Unpin for StorageClient<T>where
T: Unpin,
impl<T> UnwindSafe for StorageClient<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request