Struct TorrentApi

Source
pub struct TorrentApi<'a> { /* private fields */ }
Expand description

Main interface for TorBox torrent operations

Provides methods for all torrent-related API calls including:

  • Torrent creation and management
  • Status and metadata retrieval
  • Download link generation

Implementations§

Source§

impl<'a> TorrentApi<'a>

Source

pub fn new(client: &'a TorboxClient) -> TorrentApi<'a>

Source

pub async fn create_torrent( &self, body: TorrentCreateBody, ) -> Result<ApiResponse<TorrentCreatePayload>, ApiError>

Creates a torrent under your account

Accepts either a magnet link or torrent file. The torrent will begin downloading once verified, assuming your account has available download slots.

§Arguments
  • body - Contains either a magnet link or file path with optional parameters
§Returns

An ApiResponse with the torrent creation result

Source

pub async fn list_torrents_query( &self, query: ListTorrentsQuery, ) -> Result<ApiResponse<Option<Vec<TorrentStatus>>>, ApiError>

Gets the user’s torrent list. This gives you the needed information to perform other torrent actions.

This information only gets updated every 600 seconds, or when the Request Update On Torrent request is sent to the relay API.

§Returns

A deserialized ApiResponse containing the list of torrents.

Source

pub async fn status_query( &self, bypass_cache: bool, id: u32, ) -> Result<ApiResponse<Option<TorrentStatus>>, ApiError>

Gets detailed status for a specific torrent

§Arguments
  • query - Contains the torrent ID and cache bypass option
§Returns

An ApiResponse with the torrent’s current status

Source

pub async fn info_query( &self, hash: String, timeout: Option<u32>, ) -> Result<ApiResponse<TorrentInfoPayload>, ApiError>

Fetches torrent metadata using a GET request with query parameters.

This is a general-purpose route that takes a torrent hash and queries the BitTorrent network for information about it. This data retrieval may take time and will timeout by default after 10 seconds. You may adjust this with the optional timeout parameter.

This route is cached, so repeated requests for the same torrent hash will return instantly after the first request.

§Arguments
  • hash - The torrent info hash to search for.
  • timeout - Optional timeout in seconds for the request. Defaults to 10 seconds.
§Returns
§Success payload (TorrentInfoPayload)
  • Meta(Box<TorrentMeta>) – full metadata (name, size, file list, …)
  • Message(String) – informational message (e.g. “not found yet”)
§Errors

Network / JSON errors → ApiError::Transport
success == falseApiError::Failure
Unexpected JSON → ApiError::UnexpectedPayload

Source

pub async fn info_body( &self, body: TorrentInfoBody, ) -> Result<ApiResponse<TorrentInfoPayload>, ApiError>

Fetches torrent metadata using a POST request with flexible input types.

This endpoint allows sending a hash, magnet link, or a raw torrent file. TorBox will prioritize the fields in the following order:

  • hash takes precedence over
  • magnet, which takes precedence over
  • file

At least one of these fields is required. Only valid torrent files are accepted.

Like the GET route, data is fetched from the BitTorrent network and cached for future requests. The default timeout is 10 seconds but can be customized.

§Arguments
  • body - A TorrentInfoBody struct containing hash, timeout, and the source type.
§Returns

A deserialized ApiResponse containing metadata about the torrent.

Requests a download link for a torrent

Links are valid for 3 hours. Once downloading starts, the transfer can continue indefinitely. Permalinks can and should be created by setting redirect=true.

Setting redirect = true truly helps torbox servers not to be overwhelmed.

§Arguments
  • query - Contains torrent ID and download options
§Returns

Either a JSON response or redirect URL

Source

pub async fn control_torrent( &self, body: TorrentControlBody, ) -> Result<ApiResponse<()>, ApiError>

Controls torrent state (start, stop, delete, etc.)

§Arguments
  • body - Contains the torrent source and operation to perform
§Returns

An empty ApiResponse on success

Source

pub async fn export_data_query( &self, torrent_id: u32, data_type: TorrentExportType, ) -> Result<TorrentExportResponse, ApiError>

Exports the magnet or torrent file.

Requires a type to be passed. If type is magnet, it will return a JSON response with the magnet as a string in the data key.

If type is file, it will return a bittorrent file as a download. Not compatible with cached downloads.

Trait Implementations§

Source§

impl<'a> NamedType for TorrentApi<'a>

Source§

fn sid() -> SpectaID

Source§

fn named_data_type( type_map: &mut TypeCollection, generics: &[DataType], ) -> NamedDataType

this is equivalent to Type::inline but returns a NamedDataType instead.
Source§

fn definition_named_data_type(type_map: &mut TypeCollection) -> NamedDataType

this is equivalent to [Type::definition] but returns a NamedDataType instead.
Source§

impl<'a> Type for TorrentApi<'a>

Source§

fn inline(type_map: &mut TypeCollection, generics: Generics<'_>) -> DataType

Returns the definition of a type using the provided generics. Read more
Source§

fn reference(type_map: &mut TypeCollection, generics: &[DataType]) -> Reference

Generates a datatype corresponding to a reference to this type, as determined by its category. Getting a reference to a type implies that it should belong in the type map (since it has to be referenced from somewhere), so the output of definition will be put into the type map.
Source§

impl<'a> Flatten for TorrentApi<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for TorrentApi<'a>

§

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

§

impl<'a> Send for TorrentApi<'a>

§

impl<'a> Sync for TorrentApi<'a>

§

impl<'a> Unpin for TorrentApi<'a>

§

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

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,