use async_trait::async_trait;
use crate::{
BrowseRequest, BrowseResponse, GazelleError, GroupResponse, TorrentResponse, UploadForm,
UploadResponse, User,
};
#[async_trait]
pub trait GazelleClientTrait: Send + Sync {
async fn browse(&self, request: &BrowseRequest) -> Result<BrowseResponse, GazelleError>;
async fn get_torrent(&self, id: u32) -> Result<TorrentResponse, GazelleError>;
async fn get_torrent_group(&self, id: u32) -> Result<GroupResponse, GazelleError>;
async fn get_user(&self, id: u32) -> Result<User, GazelleError>;
async fn download_torrent(&self, id: u32) -> Result<Vec<u8>, GazelleError>;
async fn upload_torrent(&self, upload: UploadForm) -> Result<UploadResponse, GazelleError>;
}