Struct cloud_storage::client::ObjectClient[][src]

pub struct ObjectClient<'a>(_);
Expand description

Operations on Objects.

Implementations

impl<'a> ObjectClient<'a>[src]

pub async fn create(
    &self,
    bucket: &str,
    file: Vec<u8>,
    filename: &str,
    mime_type: &str
) -> Result<Object>
[src]

Create a new object. Upload a file as that is loaded in memory to google cloud storage, where it will be interpreted according to the mime type you specified.

Example

use cloud_storage::Client;
use cloud_storage::Object;

let file: Vec<u8> = read_cute_cat("cat.png");
let client = Client::default();
client.object().create("cat-photos", file, "recently read cat.png", "image/png").await?;

pub async fn create_streamed<S>(
    &self,
    bucket: &str,
    stream: S,
    length: impl Into<Option<u64>>,
    filename: &str,
    mime_type: &str
) -> Result<Object> where
    S: TryStream + Send + Sync + 'static,
    S::Error: Into<Box<dyn Error + Send + Sync>>,
    Bytes: From<S::Ok>, 
[src]

Create a new object. This works in the same way as ObjectClient::create, except it does not need to load the entire file in ram.

Example

use cloud_storage::Client;
use cloud_storage::Object;

let client = Client::default();
let file = reqwest::Client::new()
    .get("https://my_domain.rs/nice_cat_photo.png")
    .send()
    .await?
    .bytes_stream();
client.object().create_streamed("cat-photos", file, 10, "recently read cat.png", "image/png").await?;

pub async fn list(
    &self,
    bucket: &'a str,
    list_request: ListRequest
) -> Result<impl Stream<Item = Result<ObjectList>> + 'a>
[src]

Obtain a list of objects within this Bucket.

Example

use cloud_storage::Client;
use cloud_storage::{Object, ListRequest};

let client = Client::default();
let all_objects = client.object().list("my_bucket", ListRequest::default()).await?;

pub async fn read(&self, bucket: &str, file_name: &str) -> Result<Object>[src]

Obtains a single object with the specified name in the specified bucket.

Example

use cloud_storage::Client;
use cloud_storage::Object;

let client = Client::default();
let object = client.object().read("my_bucket", "path/to/my/file.png").await?;

pub async fn download(&self, bucket: &str, file_name: &str) -> Result<Vec<u8>>[src]

Download the content of the object with the specified name in the specified bucket.

Example

use cloud_storage::Client;
use cloud_storage::Object;

let client = Client::default();
let bytes = client.object().download("my_bucket", "path/to/my/file.png").await?;

pub async fn download_streamed(
    &self,
    bucket: &str,
    file_name: &str
) -> Result<impl Stream<Item = Result<u8>> + Unpin>
[src]

Download the content of the object with the specified name in the specified bucket, without allocating the whole file into a vector.

Example

use cloud_storage::Client;
use cloud_storage::Object;
use futures::StreamExt;
use std::fs::File;
use std::io::{BufWriter, Write};

let client = Client::default();
let mut stream = client.object().download_streamed("my_bucket", "path/to/my/file.png").await?;
let mut file = BufWriter::new(File::create("file.png").unwrap());
while let Some(byte) = stream.next().await {
    file.write_all(&[byte.unwrap()]).unwrap();
}

pub async fn update(&self, object: &Object) -> Result<Object>[src]

Obtains a single object with the specified name in the specified bucket.

Example

use cloud_storage::Client;
use cloud_storage::Object;

let client = Client::default();
let mut object = client.object().read("my_bucket", "path/to/my/file.png").await?;
object.content_type = Some("application/xml".to_string());
client.object().update(&object).await?;

pub async fn delete(&self, bucket: &str, file_name: &str) -> Result<()>[src]

Deletes a single object with the specified name in the specified bucket.

Example

use cloud_storage::Client;
use cloud_storage::Object;

let client = Client::default();
client.object().delete("my_bucket", "path/to/my/file.png").await?;

pub async fn compose(
    &self,
    bucket: &str,
    req: &ComposeRequest,
    destination_object: &str
) -> Result<Object>
[src]

Obtains a single object with the specified name in the specified bucket.

Example

use cloud_storage::Client;
use cloud_storage::object::{Object, ComposeRequest, SourceObject};

let client = Client::default();
let obj1 = client.object().read("my_bucket", "file1").await?;
let obj2 = client.object().read("my_bucket", "file2").await?;
let compose_request = ComposeRequest {
    kind: "storage#composeRequest".to_string(),
    source_objects: vec![
        SourceObject {
            name: obj1.name.clone(),
            generation: None,
            object_preconditions: None,
        },
        SourceObject {
            name: obj2.name.clone(),
            generation: None,
            object_preconditions: None,
        },
    ],
    destination: None,
};
let obj3 = client.object().compose("my_bucket", &compose_request, "test-concatted-file").await?;
// obj3 is now a file with the content of obj1 and obj2 concatted together.

pub async fn copy(
    &self,
    object: &Object,
    destination_bucket: &str,
    path: &str
) -> Result<Object>
[src]

Copy this object to the target bucket and path

Example

use cloud_storage::Client;
use cloud_storage::object::{Object, ComposeRequest};

let client = Client::default();
let obj1 = client.object().read("my_bucket", "file1").await?;
let obj2 = client.object().copy(&obj1, "my_other_bucket", "file2").await?;
// obj2 is now a copy of obj1.

pub async fn rewrite(
    &self,
    object: &Object,
    destination_bucket: &str,
    path: &str
) -> Result<Object>
[src]

Moves a file from the current location to the target bucket and path.

Limitations

This function does not yet support rewriting objects to another

  • Geographical Location,
  • Encryption,
  • Storage class. These limitations mean that for now, the rewrite and the copy methods do the same thing.

Example

use cloud_storage::Client;
use cloud_storage::object::Object;

let client = Client::default();
let obj1 = client.object().read("my_bucket", "file1").await?;
let obj2 = client.object().rewrite(&obj1, "my_other_bucket", "file2").await?;
// obj2 is now a copy of obj1.

Trait Implementations

impl<'a> Debug for ObjectClient<'a>[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl<'a> !RefUnwindSafe for ObjectClient<'a>

impl<'a> Send for ObjectClient<'a>

impl<'a> Sync for ObjectClient<'a>

impl<'a> Unpin for ObjectClient<'a>

impl<'a> !UnwindSafe for ObjectClient<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T> Instrument for T[src]

fn instrument(self, span: Span) -> Instrumented<Self>[src]

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

fn in_current_span(self) -> Instrumented<Self>[src]

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.