@putdotio/api-client
Version:
JavaScript SDK for interacting with the put.io API.
108 lines (107 loc) • 3.55 kB
TypeScript
import { ISODateString } from '../../utils/types';
import { IFile } from '../../resources/Files/types';
export declare type NewTransferParams = {
url: string;
save_parent_id?: IFile['id'];
callback_url?: string;
};
export declare type NewTransferError = {
url: NewTransferParams['url'];
status_code: number;
error_type: string;
};
declare type TransferType = 'URL' | 'TORRENT' | 'PLAYLIST' | 'LIVE_STREAM' | 'N/A';
declare type TransferStatus = 'WAITING' | 'PREPARING_DOWNLOAD' | 'IN_QUEUE' | 'DOWNLOADING' | 'WAITING_FOR_COMPLETE_QUEUE' | 'WAITING_FOR_DOWNLOADER' | 'COMPLETING' | 'STOPPING' | 'SEEDING' | 'COMPLETED' | 'ERROR';
declare type TransferLink = {
url: string;
label: string;
};
declare type BaseTransfer = {
availability: null | number;
created_at: ISODateString;
current_ratio: null | number;
down_speed: number;
downloaded: number;
error_message: null | string;
estimated_time: null | number;
file_id: null | number;
finished_at: null | ISODateString;
id: number;
is_private: boolean;
name: string;
save_parent_id: number;
seconds_seeding: null | number;
size: number;
source: string;
started_at: null | ISODateString;
status: TransferStatus;
type: TransferType;
subscription_id: null | number;
uploaded: number;
up_speed: number;
callback_url: null | string;
client_ip: null | string;
completion_percent: number;
percent_done: number;
created_torrent: boolean;
download_id: number;
hash: null | string;
links: TransferLink[];
peers_connected: number;
peers_getting_from_us: number;
peers_sending_to_us: number;
simulated: boolean;
torrent_link: null | string;
tracker: null | string;
tracker_message: null | string;
updated_at?: ISODateString;
userfile_exists?: boolean;
};
declare type FinishedTransfer = BaseTransfer & {
finished_at: ISODateString;
file_id: number;
};
declare type CompletedTransfer = FinishedTransfer & {
status: 'COMPLETED';
};
declare type FailedTransfer = BaseTransfer & {
status: 'ERROR';
error_message: string;
};
declare type PreparingSeedingTorrentTransfer = FinishedTransfer & {
type: 'TORRENT';
status: 'PREPARING_SEED';
};
declare type SeedingTorrentTransfer = FinishedTransfer & {
type: 'TORRENT';
status: 'SEEDING';
seconds_seeding: number;
current_ratio: number;
};
declare type CompletedTorrentTransfer = SeedingTorrentTransfer & {
status: 'COMPLETED';
};
export declare type TorrentTransfer = (BaseTransfer | FailedTransfer | SeedingTorrentTransfer | PreparingSeedingTorrentTransfer | CompletedTorrentTransfer) & {
type: 'TORRENT';
torrent_link: string;
};
export declare type URLTransfer = (BaseTransfer | FailedTransfer | CompletedTransfer) & {
type: 'URL';
};
export declare type PlaylistTransfer = (BaseTransfer | FailedTransfer | CompletedTransfer) & {
type: 'PLAYLIST';
downloaded_items: number;
total_items: number;
recorded_seconds: number;
};
export declare type LiveStreamTransfer = (BaseTransfer | FailedTransfer | CompletedTransfer) & {
type: 'LIVE_STREAM';
recorded_seconds: number;
};
export declare type Transfer = TorrentTransfer | URLTransfer | PlaylistTransfer | LiveStreamTransfer;
export interface ITransfersResponse {
transfers: Transfer[];
total: number;
cursor: string;
}
export {};