amagi 0.1.3

Rust SDK, CLI, and Web API service skeleton for multi-platform social web adapters.
Documentation
use crate::{error::AppError, platforms::douyin::generate_ms_token};

use super::{
    builder::DouyinRequestBuilder,
    shared::{build_url, join_base},
};

impl DouyinRequestBuilder {
    pub(crate) fn live_room_info(&self, room_id: &str, web_rid: &str) -> Result<String, AppError> {
        let params = vec![
            ("aid", "6383".into()),
            ("app_name", "douyin_web".into()),
            ("live_id", "1".into()),
            ("device_platform", "web".into()),
            ("language", "zh-CN".into()),
            ("enter_from", "web_share_link".into()),
            ("cookie_enabled", "true".into()),
            ("screen_width", "2048".into()),
            ("screen_height", "1152".into()),
            ("browser_language", "zh-CN".into()),
            ("browser_platform", "Win32".into()),
            ("browser_name", "Chrome".into()),
            ("browser_version", "125.0.0.0".into()),
            ("web_rid", web_rid.to_owned()),
            ("room_id_str", room_id.to_owned()),
            ("enter_source", String::new()),
            ("is_need_double_stream", "false".into()),
            ("insert_task_id", String::new()),
            ("live_reason", String::new()),
            ("msToken", generate_ms_token(116)),
            ("verifyFp", self.verify_fp.clone()),
            ("fp", self.verify_fp.clone()),
        ];
        build_url(
            &join_base(&self.endpoints.live_base, "/webcast/room/web/enter/"),
            params,
        )
    }

    pub(crate) fn login_qrcode(&self, verify_fp: &str) -> Result<String, AppError> {
        build_url(
            &join_base(&self.endpoints.sso_base, "/get_qrcode/"),
            vec![
                ("verifyFp", verify_fp.to_owned()),
                ("fp", verify_fp.to_owned()),
            ],
        )
    }
}