tail-fin-xhs 0.7.8

Xiaohongshu adapter for tail-fin: search, notes, comments, feed
Documentation
use tail_fin_common::BrowserSession;

use tail_fin_common::TailFinError;

/// Extract auth cookies from the browser for xiaohongshu.com.
///
/// Xiaohongshu uses several cookies for authentication and request signing.
/// The key cookies include `a1` (device fingerprint) and session-related tokens.
pub async fn extract_xhs_cookies(
    session: &BrowserSession,
) -> Result<Vec<(String, String)>, TailFinError> {
    let cookies = session.get_cookies().await?;

    let mut result = Vec::new();
    for cookie in &cookies {
        let name = cookie
            .get("name")
            .and_then(|v| v.as_str())
            .unwrap_or("")
            .to_string();
        let value = cookie
            .get("value")
            .and_then(|v| v.as_str())
            .unwrap_or("")
            .to_string();
        if !name.is_empty() && !value.is_empty() {
            result.push((name, value));
        }
    }

    if result.is_empty() {
        return Err(TailFinError::AuthRequired);
    }

    Ok(result)
}