use crate::error::AppError;
use super::super::fetcher::requests::{XiaohongshuApiEndpoints, XiaohongshuRequestBuilder};
use super::types::{
XiaohongshuCommentsOptions, XiaohongshuHomeFeedOptions, XiaohongshuNoteDetailOptions,
XiaohongshuRequestSpec, XiaohongshuSearchNotesOptions, XiaohongshuUserNotesOptions,
XiaohongshuUserProfileOptions,
};
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc(alias = "xiaohongshuApiUrls")]
pub struct XiaohongshuApiUrls {
endpoints: XiaohongshuApiEndpoints,
}
impl Default for XiaohongshuApiUrls {
fn default() -> Self {
Self::new()
}
}
impl XiaohongshuApiUrls {
pub fn new() -> Self {
Self {
endpoints: XiaohongshuApiEndpoints::default(),
}
}
pub fn with_base_urls(
api_base_url: impl Into<String>,
web_base_url: impl Into<String>,
) -> Self {
Self {
endpoints: XiaohongshuApiEndpoints {
api_base_url: api_base_url.into(),
web_base_url: web_base_url.into(),
},
}
}
#[doc(alias = "homeFeed")]
pub fn home_feed(
&self,
options: &XiaohongshuHomeFeedOptions,
) -> Result<XiaohongshuRequestSpec, AppError> {
self.request_builder().home_feed(options)
}
#[doc(alias = "noteDetail")]
pub fn note_detail(
&self,
options: &XiaohongshuNoteDetailOptions,
) -> Result<XiaohongshuRequestSpec, AppError> {
self.request_builder().note_detail(options)
}
#[doc(alias = "noteComments")]
pub fn note_comments(
&self,
options: &XiaohongshuCommentsOptions,
) -> Result<XiaohongshuRequestSpec, AppError> {
self.request_builder().note_comments(options)
}
#[doc(alias = "userProfile")]
pub fn user_profile(
&self,
options: &XiaohongshuUserProfileOptions,
) -> Result<XiaohongshuRequestSpec, AppError> {
self.request_builder().user_profile(options)
}
#[doc(alias = "userNoteList")]
pub fn user_note_list(
&self,
options: &XiaohongshuUserNotesOptions,
) -> Result<XiaohongshuRequestSpec, AppError> {
self.request_builder().user_note_list(options)
}
#[doc(alias = "emojiList")]
pub fn emoji_list(&self) -> Result<XiaohongshuRequestSpec, AppError> {
self.request_builder().emoji_list()
}
#[doc(alias = "searchNotes")]
pub fn search_notes(
&self,
options: &XiaohongshuSearchNotesOptions,
) -> Result<XiaohongshuRequestSpec, AppError> {
self.request_builder().search_notes(options, None)
}
fn request_builder(&self) -> XiaohongshuRequestBuilder {
XiaohongshuRequestBuilder::new(self.endpoints.clone())
}
}
#[doc(alias = "createXiaohongshuApiUrls")]
pub fn create_xiaohongshu_api_urls() -> XiaohongshuApiUrls {
XiaohongshuApiUrls::new()
}