rusty-cat 0.1.1

Async HTTP client for resumable file upload and download.
Documentation
use async_trait::async_trait;

use crate::chunk_outcome::ChunkOutcome;
use crate::error::MeowError;
use crate::prepare_outcome::PrepareOutcome;
use crate::transfer_task::TransferTask;

#[async_trait]
pub trait TransferTrait: Send + Sync {
    async fn prepare(
        &self,
        task: &TransferTask,
        local_offset: u64,
    ) -> Result<PrepareOutcome, MeowError>;

    /// `remote_total_size`:下载时为 [`PrepareOutcome::total_size`](HEAD 得到);上传可与 `task.total_size()` 一致。
    async fn transfer_chunk(
        &self,
        task: &TransferTask,
        offset: u64,
        chunk_size: u64,
        remote_total_size: u64,
    ) -> Result<ChunkOutcome, MeowError>;
}