cloud-disk-sync 0.1.0

a cloud disk sync tool
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::config::{AccountConfig, ProviderType};
use crate::providers::{AliYunDriveProvider, StorageProvider, WebDavProvider};

pub async fn create_provider(
    account: &AccountConfig,
) -> Result<Box<dyn StorageProvider>, Box<dyn std::error::Error>> {
    match account.provider {
        ProviderType::AliYunDrive => {
            let provider: AliYunDriveProvider = AliYunDriveProvider::new(account).await?;
            Ok(Box::new(provider))
        }
        ProviderType::WebDAV => {
            let provider: WebDavProvider = WebDavProvider::new(account).await?;
            Ok(Box::new(provider))
        }
        _ => Err(format!("Unsupported provider type: {:?}", account.provider).into()),
    }
}