torbox-core-rs 0.1.0

Rust SDK Core for the torbox API
Documentation
use std::collections::HashMap;

use chrono::{DateTime, FixedOffset};
use serde::{Deserialize, Serialize};
use serde_json::Value;

#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct UserProfile {
    pub id: u64,
    pub auth_id: String,
    pub created_at: DateTime<FixedOffset>,
    pub updated_at: DateTime<FixedOffset>,
    pub plan: u8,
    pub total_downloaded: u64,
    pub customer: String,
    pub is_subscribed: bool,
    pub premium_expires_at: DateTime<FixedOffset>,
    pub cooldown_until: DateTime<FixedOffset>,
    pub email: String,
    pub user_referral: String,
    pub base_email: String,
    pub server: Option<u64>,
    pub total_bytes_downloaded: u64,
    pub total_bytes_uploaded: u64,
    pub torrents_downloaded: u64,
    pub web_downloads_downloaded: u64,
    pub usenet_downloads_downloaded: u64,
    pub additional_concurrent_slots: u64,
    pub long_term_seeding: bool,
    pub long_term_storage: bool,
    pub is_vendor: bool,
    pub vendor_id: Option<String>,
    pub purchases_referred: u64,
    #[serde(default)]
    pub settings: Option<HashMap<String, Value>>,
}

#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct Job {
    pub id: u64,
    pub created_at: DateTime<FixedOffset>,
    pub updated_at: DateTime<FixedOffset>,
    pub auth_id: String,
    pub hash: String,
    #[serde(rename = "type")]
    pub job_type: String,
    pub integration: String,
    #[serde(default)]
    pub file_id: Option<u64>,
    pub zip: bool,
    pub progress: f64,
    pub detail: String,
    pub download_url: Option<String>,
    pub status: String,
}

#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct SessionToken {
    pub token: String,
    pub expires_at: u64,
}

#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct DeviceCodeAuth {
    pub device_code: String,
    pub interval: u64,
    pub expires_at: String,
    pub verification_url: String,
    pub friendly_verification_url: String,
    pub code: String,
}

#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct ReferralData {
    pub referred_accounts: u32,
    pub referral_code: String,
    pub purchases_referred: u32,
}

#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct SubscriptionData {
    pub created_at: String,
    pub updated_at: String,
    pub subscription_code: String,
    pub email_token: String,
    pub auth_id: String,
    pub plan_code: String,
    pub status: String,
    pub gateway: String,
    pub plan_name: String,
}

#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct TransactionData {
    pub at: String,
    #[serde(rename = "type")]
    pub kind: String,
    pub amount: u32,
    pub transaction_id: String,
}

#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct SearchEngineData {
    pub id: u64,
    pub created_at: String,
    pub auth_id: String,
    #[serde(rename = "type")]
    pub kind: String,
    pub url: String,
    pub apikey: String,
    pub active: bool,
    pub valid: bool,
    pub download_type: String,
    pub indexers: Vec<String>,
}