BundleHandler

Struct BundleHandler 

Source
pub struct BundleHandler { /* private fields */ }
Expand description

Handler for bundle operations

Implementations§

Source§

impl BundleHandler

Source

pub fn new(client: FilesClient) -> Self

Create a new bundle handler

Source

pub async fn list( &self, user_id: Option<i64>, cursor: Option<&str>, per_page: Option<i64>, ) -> Result<(Vec<BundleEntity>, PaginationInfo)>

List all bundles accessible to the current user

Returns a paginated list of bundles (share links) with optional filtering.

§Arguments
  • user_id - Filter bundles by user ID (None for all accessible bundles)
  • cursor - Pagination cursor from previous response
  • per_page - Number of results per page (max 10,000)
§Returns

A tuple containing:

  • Vector of BundleEntity objects
  • PaginationInfo with cursors for next/previous pages
§Example
use files_sdk::{FilesClient, BundleHandler};

let client = FilesClient::builder().api_key("key").build()?;
let handler = BundleHandler::new(client);

// List first page of bundles
let (bundles, pagination) = handler.list(None, None, Some(50)).await?;

for bundle in bundles {
    println!("Bundle: {} - {}",
        bundle.code.unwrap_or_default(),
        bundle.url.unwrap_or_default());
}

// Get next page if available
if let Some(next_cursor) = pagination.cursor_next {
    let (more_bundles, _) = handler.list(None, Some(&next_cursor), Some(50)).await?;
}
Source

pub async fn get(&self, id: i64) -> Result<BundleEntity>

Get details of a specific bundle by ID

§Arguments
  • id - The unique bundle ID
§Returns

A BundleEntity with complete bundle information

§Example
use files_sdk::{FilesClient, BundleHandler};

let client = FilesClient::builder().api_key("key").build()?;
let handler = BundleHandler::new(client);

let bundle = handler.get(12345).await?;
println!("Bundle URL: {}", bundle.url.unwrap_or_default());
println!("Expires: {}", bundle.expires_at.unwrap_or_default());
Source

pub async fn create( &self, paths: Vec<String>, password: Option<&str>, expires_at: Option<&str>, max_uses: Option<i64>, description: Option<&str>, note: Option<&str>, code: Option<&str>, require_registration: Option<bool>, permissions: Option<&str>, ) -> Result<BundleEntity>

Create a new bundle (share link)

Creates a shareable link to one or more files or folders with configurable access controls and restrictions.

§Arguments
  • paths - Vector of file/folder paths to share (required, must not be empty)
  • password - Password required to access the bundle
  • expires_at - ISO 8601 timestamp when bundle expires (e.g., “2024-12-31T23:59:59Z”)
  • max_uses - Maximum number of times bundle can be accessed
  • description - Public description shown to recipients
  • note - Private internal note (not shown to recipients)
  • code - Custom URL code (auto-generated if not provided)
  • require_registration - Require recipients to register before access
  • permissions - Access level: “read”, “write”, “read_write”, “full”, “preview_only”
§Returns

The newly created BundleEntity with URL and access details

§Example
use files_sdk::{FilesClient, BundleHandler};

let client = FilesClient::builder().api_key("key").build()?;
let handler = BundleHandler::new(client);

// Create a simple share link
let bundle = handler.create(
    vec!["/documents/report.pdf".to_string()],
    None,
    None,
    None,
    Some("Monthly Report"),
    None,
    None,
    Some(false),
    Some("read")
).await?;

println!("Share this link: {}", bundle.url.unwrap());
Source

pub async fn update( &self, id: i64, password: Option<&str>, expires_at: Option<&str>, max_uses: Option<i64>, description: Option<&str>, note: Option<&str>, ) -> Result<BundleEntity>

Update an existing bundle’s settings

Modifies bundle properties such as password, expiration, and description. Only provided fields will be updated; omitted fields remain unchanged.

§Arguments
  • id - Bundle ID to update
  • password - New password (pass empty string to remove password)
  • expires_at - New expiration timestamp
  • max_uses - New maximum access count
  • description - New public description
  • note - New internal note
§Returns

The updated BundleEntity

§Example
use files_sdk::{FilesClient, BundleHandler};

let client = FilesClient::builder().api_key("key").build()?;
let handler = BundleHandler::new(client);

// Extend expiration and update description
let bundle = handler.update(
    12345,
    None,
    Some("2025-06-30T23:59:59Z"),
    None,
    Some("Updated report - extended access"),
    None
).await?;
Source

pub async fn delete(&self, id: i64) -> Result<()>

Delete a bundle permanently

Removes the bundle and revokes access via its share link. This operation cannot be undone.

§Arguments
  • id - Bundle ID to delete
§Example
use files_sdk::{FilesClient, BundleHandler};

let client = FilesClient::builder().api_key("key").build()?;
let handler = BundleHandler::new(client);

handler.delete(12345).await?;
println!("Bundle deleted successfully");
Source

pub async fn share( &self, id: i64, to: Vec<String>, note: Option<&str>, ) -> Result<()>

Share a bundle via email

Sends email notifications with the bundle link to specified recipients. Recipients receive an email with the share link and optional message.

§Arguments
  • id - Bundle ID to share
  • to - Vector of recipient email addresses
  • note - Optional message to include in the email
§Example
use files_sdk::{FilesClient, BundleHandler};

let client = FilesClient::builder().api_key("key").build()?;
let handler = BundleHandler::new(client);

// Share with multiple recipients
handler.share(
    12345,
    vec![
        "user1@example.com".to_string(),
        "user2@example.com".to_string()
    ],
    Some("Please review these files by Friday")
).await?;

println!("Bundle shared successfully");

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

fn in_current_span(self) -> Instrumented<Self>

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

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,