pub struct ReadObject<C = Crc32c> { /* private fields */ }Expand description
The request builder for Storage::read_object calls.
§Example: accumulate the contents of an object into a vector
use google_cloud_storage::{client::Storage, builder::storage::ReadObject};
async fn sample(client: &Storage) -> anyhow::Result<()> {
let builder: ReadObject = client.read_object("projects/_/buckets/my-bucket", "my-object");
let mut reader = builder.send().await?;
let mut contents = Vec::new();
while let Some(chunk) = reader.next().await.transpose()? {
contents.extend_from_slice(&chunk);
}
println!("object contents={:?}", contents);
Ok(())
}§Example: read part of an object
use google_cloud_storage::{client::Storage, builder::storage::ReadObject};
async fn sample(client: &Storage) -> anyhow::Result<()> {
const MIB: i64 = 1024 * 1024;
let mut contents = Vec::new();
let mut reader = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_read_offset(4 * MIB)
.with_read_limit(2 * MIB)
.send()
.await?;
while let Some(chunk) = reader.next().await.transpose()? {
contents.extend_from_slice(&chunk);
}
println!("range contents={:?}", contents);
Ok(())
}Implementations§
Source§impl ReadObject<Crc32c>
impl ReadObject<Crc32c>
Sourcepub fn compute_md5(self) -> ReadObject<Md5<Crc32c>>
pub fn compute_md5(self) -> ReadObject<Md5<Crc32c>>
Enables computation of MD5 hashes.
Crc32c hashes are checked by default.
Checksum validation is supported iff:
- The full content is requested.
- All of the content is returned (status != PartialContent).
- The server sent a checksum header.
- The http stack did not uncompress the file.
- The server did not uncompress data on download.
§Example
let builder = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.compute_md5();
let mut reader = builder
.send()
.await?;
let mut contents = Vec::new();
while let Some(chunk) = reader.next().await.transpose()? {
contents.extend_from_slice(&chunk);
}
println!("object contents={:?}", contents);Source§impl<C> ReadObject<C>
impl<C> ReadObject<C>
Sourcepub fn with_generation<T: Into<i64>>(self, v: T) -> Self
pub fn with_generation<T: Into<i64>>(self, v: T) -> Self
If present, selects a specific revision of this object (as opposed to the latest version, the default).
Sourcepub fn with_if_generation_match<T>(self, v: T) -> Self
pub fn with_if_generation_match<T>(self, v: T) -> Self
Makes the operation conditional on whether the 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.
Sourcepub fn with_if_generation_not_match<T>(self, v: T) -> Self
pub fn with_if_generation_not_match<T>(self, v: T) -> Self
Makes the operation conditional on whether the object’s live 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.
Sourcepub fn with_if_metageneration_match<T>(self, v: T) -> Self
pub fn with_if_metageneration_match<T>(self, v: T) -> Self
Makes the operation conditional on whether the object’s current metageneration matches the given value.
Sourcepub fn with_if_metageneration_not_match<T>(self, v: T) -> Self
pub fn with_if_metageneration_not_match<T>(self, v: T) -> Self
Makes the operation conditional on whether the object’s current metageneration does not match the given value.
Sourcepub fn with_read_offset<T>(self, v: T) -> Self
pub fn with_read_offset<T>(self, v: T) -> Self
The offset for the first byte to return in the read, relative to the start of the object.
A negative read_offset value will be interpreted as the number of bytes
back from the end of the object to be returned.
§Examples
Read starting at 100 bytes to end of file.
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_read_offset(100)
.send()
.await?;
println!("response details={response:?}");Read last 100 bytes of file:
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_read_offset(-100)
.send()
.await?;
println!("response details={response:?}");Read bytes 1000 to 1099.
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_read_offset(1000)
.with_read_limit(100)
.send()
.await?;
println!("response details={response:?}");Sourcepub fn with_read_limit<T>(self, v: T) -> Self
pub fn with_read_limit<T>(self, v: T) -> Self
The maximum number of data bytes the server is allowed to
return.
A read_limit of zero indicates that there is no limit,
and a negative read_limit will cause an error.
§Examples:
Read first 100 bytes.
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_read_limit(100)
.send()
.await?;
println!("response details={response:?}");Read bytes 1000 to 1099.
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_read_offset(1000)
.with_read_limit(100)
.send()
.await?;
println!("response details={response:?}");Sourcepub fn with_key(self, v: KeyAes256) -> Self
pub fn with_key(self, v: KeyAes256) -> Self
The encryption key used with the Customer-Supplied Encryption Keys feature. In raw bytes format (not base64-encoded).
Example:
let key: &[u8] = &[97; 32];
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_key(KeyAes256::new(key)?)
.send()
.await?;
println!("response details={response:?}");Sourcepub fn with_retry_policy<V: Into<RetryPolicyArg>>(self, v: V) -> Self
pub fn with_retry_policy<V: Into<RetryPolicyArg>>(self, v: V) -> Self
The retry policy used for this request.
§Example
use google_cloud_storage::retry_policy::RecommendedPolicy;
use std::time::Duration;
use gax::retry_policy::RetryPolicyExt;
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_retry_policy(RecommendedPolicy
.with_attempt_limit(5)
.with_time_limit(Duration::from_secs(10)),
)
.send()
.await?;
println!("response details={response:?}");Sourcepub fn with_backoff_policy<V: Into<BackoffPolicyArg>>(self, v: V) -> Self
pub fn with_backoff_policy<V: Into<BackoffPolicyArg>>(self, v: V) -> Self
The backoff policy used for this request.
§Example
use std::time::Duration;
use gax::exponential_backoff::ExponentialBackoff;
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_backoff_policy(ExponentialBackoff::default())
.send()
.await?;
println!("response details={response:?}");Sourcepub fn with_retry_throttler<V: Into<RetryThrottlerArg>>(self, v: V) -> Self
pub fn with_retry_throttler<V: Into<RetryThrottlerArg>>(self, v: V) -> Self
The retry throttler used for this request.
Most of the time you want to use the same throttler for all the requests in a client, and even the same throttler for many clients. Rarely it may be necessary to use an custom throttler for some subset of the requests.
§Example
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_retry_throttler(adhoc_throttler())
.send()
.await?;
println!("response details={response:?}");
fn adhoc_throttler() -> gax::retry_throttler::SharedRetryThrottler {
}Sourcepub fn with_download_resume_policy<V>(self, v: V) -> Selfwhere
V: DownloadResumePolicy + 'static,
pub fn with_download_resume_policy<V>(self, v: V) -> Selfwhere
V: DownloadResumePolicy + 'static,
Configure the resume policy for downloads.
The Cloud Storage client library can automatically resume a download that is interrupted by a transient error. Applications may want to limit the number of download attempts, or may wish to expand the type of errors treated as retryable.
§Example
use google_cloud_storage::download_resume_policy::{AlwaysResume, DownloadResumePolicyExt};
let response = client
.read_object("projects/_/buckets/my-bucket", "my-object")
.with_download_resume_policy(AlwaysResume.with_attempt_limit(3))
.send()
.await?;Sourcepub async fn send(self) -> Result<ReadObjectResponse<C>>
pub async fn send(self) -> Result<ReadObjectResponse<C>>
Sends the request.
Trait Implementations§
Source§impl<C: Clone> Clone for ReadObject<C>
impl<C: Clone> Clone for ReadObject<C>
Source§fn clone(&self) -> ReadObject<C>
fn clone(&self) -> ReadObject<C>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<C = Crc32c> !Freeze for ReadObject<C>
impl<C = Crc32c> !RefUnwindSafe for ReadObject<C>
impl<C> Send for ReadObject<C>where
C: Send,
impl<C> Sync for ReadObject<C>where
C: Sync,
impl<C> Unpin for ReadObject<C>where
C: Unpin,
impl<C = Crc32c> !UnwindSafe for ReadObject<C>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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