amagi 0.1.4

Rust SDK, CLI, and Web API service skeleton for multi-platform social web adapters.
Documentation
use tracing::info;

use crate::APP_NAME;
use crate::client::AmagiClient;
use crate::config::DouyinRunTask;
use crate::error::AppError;
use crate::output::Printer;

pub(super) async fn run_task(
    printer: &Printer,
    client: &AmagiClient,
    task: &DouyinRunTask,
) -> Result<(), AppError> {
    match task {
        DouyinRunTask::UserProfile { sec_uid } => {
            let result = client.douyin_fetcher().fetch_user_profile(sec_uid).await?;
            printer.print_payload(&result)?;
            info!(
                app = APP_NAME,
                mode = "cli",
                platform = "douyin",
                method = "userProfile",
                sec_uid = sec_uid.as_str(),
                "cli fetch completed"
            );
        }
        DouyinRunTask::UserVideoList {
            sec_uid,
            number,
            max_cursor,
        } => {
            let result = client
                .douyin_fetcher()
                .fetch_user_video_list(sec_uid, *number, max_cursor.as_deref())
                .await?;
            printer.print_payload(&result)?;
            info!(
                app = APP_NAME,
                mode = "cli",
                platform = "douyin",
                method = "userVideoList",
                sec_uid = sec_uid.as_str(),
                "cli fetch completed"
            );
        }
        DouyinRunTask::UserFavoriteList {
            sec_uid,
            number,
            max_cursor,
        } => {
            let result = client
                .douyin_fetcher()
                .fetch_user_favorite_list(sec_uid, *number, max_cursor.as_deref())
                .await?;
            printer.print_payload(&result)?;
            info!(
                app = APP_NAME,
                mode = "cli",
                platform = "douyin",
                method = "userFavoriteList",
                sec_uid = sec_uid.as_str(),
                "cli fetch completed"
            );
        }
        DouyinRunTask::UserRecommendList {
            sec_uid,
            number,
            max_cursor,
        } => {
            let result = client
                .douyin_fetcher()
                .fetch_user_recommend_list(sec_uid, *number, max_cursor.as_deref())
                .await?;
            printer.print_payload(&result)?;
            info!(
                app = APP_NAME,
                mode = "cli",
                platform = "douyin",
                method = "userRecommendList",
                sec_uid = sec_uid.as_str(),
                "cli fetch completed"
            );
        }
        _ => unreachable!("unsupported douyin user task"),
    }

    Ok(())
}