pub struct ShindanClient { /* private fields */ }Expand description
A client for interacting with ShindanMaker.
Implementations§
Source§impl ShindanClient
impl ShindanClient
Sourcepub fn new(domain: ShindanDomain) -> Result<Self>
pub fn new(domain: ShindanDomain) -> Result<Self>
Create a new ShindanMaker client.
§Arguments
domain- The domain of ShindanMaker to use.
§Returns
A new ShindanMaker client.
§Examples
use anyhow::Result;
use shindan_maker::{ShindanClient, ShindanDomain};
fn main() -> Result<()> {
let client = ShindanClient::new(ShindanDomain::En)?; // Enum variant
let client = ShindanClient::new("Jp".parse()?)?; // String slice
let client = ShindanClient::new("EN".parse()?)?; // Case-insensitive
let client = ShindanClient::new(String::from("cn").parse()?)?; // String
Ok(())
}Sourcepub async fn get_title(&self, id: &str) -> Result<String>
pub async fn get_title(&self, id: &str) -> Result<String>
Fetches and extracts title from a shindan page.
§Arguments
id- The ID of the shindan
§Returns
The title of the shindan page.
§Errors
Returns error if network request fails or title cannot be extracted.
§Examples
use anyhow::Result;
use shindan_maker::{ShindanClient, ShindanDomain};
#[tokio::main]
async fn main() -> Result<()> {
let client = ShindanClient::new(ShindanDomain::En)?;
let title = client
.get_title("1222992")
.await?;
println!("Title: {}", title);
Ok(())
}Sourcepub async fn get_description(&self, id: &str) -> Result<String>
pub async fn get_description(&self, id: &str) -> Result<String>
Fetches and extracts description from a shindan page.
§Arguments
id- The ID of the shindan
§Returns
The description of the shindan page.
§Errors
Returns error if network request fails or description cannot be extracted.
§Examples
use anyhow::Result;
use shindan_maker::{ShindanClient, ShindanDomain};
#[tokio::main]
async fn main() -> Result<()> {
let client = ShindanClient::new(ShindanDomain::En)?;
let desc = client
.get_description("1222992")
.await?;
println!("Description: {}", desc);
Ok(())
}Sourcepub async fn get_title_with_description(
&self,
id: &str,
) -> Result<(String, String)>
pub async fn get_title_with_description( &self, id: &str, ) -> Result<(String, String)>
Fetches and extracts both title and description from a shindan page.
§Arguments
id- The ID of the shindan
§Returns
A tuple containing the title and description.
§Errors
Returns error if network request fails or content cannot be extracted.
§Examples
use anyhow::Result;
use shindan_maker::{ShindanClient, ShindanDomain};
#[tokio::main]
async fn main() -> Result<()> {
let client = ShindanClient::new(ShindanDomain::En)?;
let (title, desc) = client
.get_title_with_description("1222992")
.await?;
println!("Title: {}", title);
println!("Description: {}", desc);
Ok(())
}Sourcepub async fn get_segments(&self, id: &str, name: &str) -> Result<Segments>
pub async fn get_segments(&self, id: &str, name: &str) -> Result<Segments>
Get the segments of a shindan.
§Arguments
id- The ID of the shindan.name- The name to use for the shindan.
§Returns
The segments of the shindan.
§Examples
use shindan_maker::{ShindanClient, ShindanDomain};
#[tokio::main]
async fn main() {
let client = ShindanClient::new(ShindanDomain::En).unwrap();
let segments = client
.get_segments("1222992", "test_user")
.await
.unwrap();
println!("Result segments: {:#?}", segments);
}Sourcepub async fn get_segments_with_title(
&self,
id: &str,
name: &str,
) -> Result<(Segments, String)>
pub async fn get_segments_with_title( &self, id: &str, name: &str, ) -> Result<(Segments, String)>
Get the segments of a shindan and the title of the shindan.
§Arguments
id- The ID of the shindan.name- The name to use for the shindan.
§Returns
The segments of the shindan and the title of the shindan.
§Examples
use shindan_maker::{ShindanClient, ShindanDomain};
#[tokio::main]
async fn main() {
let client = ShindanClient::new(ShindanDomain::En).unwrap();
let (segments, title) = client
.get_segments_with_title("1222992", "test_user")
.await
.unwrap();
assert_eq!("Fantasy Stats", title);
println!("Result title: {}", title);
println!("Result text: {}", segments);
println!("Result segments: {:#?}", segments);
}Sourcepub async fn get_html_str(&self, id: &str, name: &str) -> Result<String>
pub async fn get_html_str(&self, id: &str, name: &str) -> Result<String>
Get the HTML string of a shindan.
§Arguments
id- The ID of the shindan.name- The name to use for the shindan.
§Returns
The HTML string of the shindan.
§Examples
use shindan_maker::{ShindanClient, ShindanDomain};
#[tokio::main]
async fn main() {
let client = ShindanClient::new(ShindanDomain::En).unwrap();
let html_str = client
.get_html_str("1222992", "test_user")
.await
.unwrap();
println!("{}", html_str);
}Sourcepub async fn get_html_str_with_title(
&self,
id: &str,
name: &str,
) -> Result<(String, String)>
pub async fn get_html_str_with_title( &self, id: &str, name: &str, ) -> Result<(String, String)>
Get the HTML string of a shindan and the title of the shindan.
§Arguments
id- The ID of the shindan.name- The name to use for the shindan.
§Returns
The HTML string of the shindan and the title of the shindan.
§Examples
use shindan_maker::{ShindanClient, ShindanDomain};
#[tokio::main]
async fn main() {
let client = ShindanClient::new(ShindanDomain::En).unwrap();
let (_html_str, title) = client
.get_html_str_with_title("1222992", "test_user")
.await
.unwrap();
assert_eq!("Fantasy Stats", title);
}Trait Implementations§
Source§impl Clone for ShindanClient
impl Clone for ShindanClient
Source§fn clone(&self) -> ShindanClient
fn clone(&self) -> ShindanClient
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more