mod api;
mod bound;
mod config;
mod fetcher;
mod ordered_json;
mod session;
pub mod sign;
mod types;
mod utils;
pub use api::{
XiaohongshuApiUrls, XiaohongshuCommentsOptions, XiaohongshuHomeFeedOptions,
XiaohongshuNoteDetailOptions, XiaohongshuRequestSpec, XiaohongshuSearchNotesOptions,
XiaohongshuUserNotesOptions, XiaohongshuUserProfileOptions, create_xiaohongshu_api_urls,
};
pub use bound::{BoundXiaohongshuFetcher, create_bound_xiaohongshu_fetcher};
pub use fetcher::XiaohongshuFetcher;
pub use ordered_json::OrderedJson;
pub use session::{XiaohongshuSession, XiaohongshuSignState};
pub use sign::{
CookieJar, XiaohongshuBrowserState, XiaohongshuHeaders, XiaohongshuMethod,
XiaohongshuMnsv2Input, XiaohongshuSigner, XiaohongshuXsCommonPayload, XiaohongshuXsEnvelope,
};
pub use types::{
XiaohongshuComment, XiaohongshuCommentPicture, XiaohongshuEmojiCollection,
XiaohongshuEmojiItem, XiaohongshuEmojiList, XiaohongshuFeedItem, XiaohongshuFeedNoteCard,
XiaohongshuHomeFeed, XiaohongshuImageAsset, XiaohongshuImageInfo, XiaohongshuInteractInfo,
XiaohongshuJsonResponse, XiaohongshuNoteComments, XiaohongshuNoteDetail, XiaohongshuNoteTag,
XiaohongshuSearchItem, XiaohongshuSearchNoteType, XiaohongshuSearchNotes,
XiaohongshuSearchSortType, XiaohongshuStatusResult, XiaohongshuSubComment,
XiaohongshuUserNoteList, XiaohongshuUserProfile, XiaohongshuUserProfileBasicInfo,
XiaohongshuUserSummary,
};
use crate::platforms::internal::random::{PseudoRandom, now_unix_ms};
pub fn extract_a1_from_cookie(cookie: &str) -> Option<String> {
CookieJar::parse(cookie).get("a1").map(str::to_owned)
}
pub fn generate_x_t(timestamp_ms: u64) -> u64 {
timestamp_ms
}
pub fn generate_x_b3_trace_id() -> String {
let mut signer = XiaohongshuSigner::new();
signer.get_b3_trace_id()
}
pub fn generate_x_xray_trace_id() -> String {
let mut signer = XiaohongshuSigner::new();
signer.get_xray_trace_id(None, None)
}
pub fn generate_search_id(timestamp_ms: u64, random_value: u32) -> String {
utils::generate_search_id(timestamp_ms, random_value)
}
pub fn generate_runtime_search_id() -> String {
let mut random = PseudoRandom::from_system();
utils::generate_search_id(now_unix_ms(), random.next_u32())
}