tg_bot_api/
lib.rs

1#[macro_use]
2extern crate ego_tree;
3
4mod extractor;
5mod parser;
6mod util;
7
8pub use extractor::ExtractorError;
9pub use parser::{
10    Argument, Field, Method, MethodArgs, Object, ObjectData, ParseError, Parsed, Type,
11};
12
13pub const CORE_TELEGRAM_URL: &str = "https://core.telegram.org";
14pub const BOT_API_DOCS_URL: &str = "https://core.telegram.org/bots/api/";
15
16use extractor::Extractor;
17
18#[derive(Debug, thiserror::Error)]
19pub enum Error {
20    #[error("Extractor: {0}")]
21    Extractor(
22        #[from]
23        #[source]
24        ExtractorError,
25    ),
26    #[error("Parser: {0}")]
27    Parse(
28        #[from]
29        #[source]
30        ParseError,
31    ),
32}
33
34pub fn get(html_doc: &str) -> Result<Parsed, Error> {
35    let extractor = Extractor::from_str(html_doc);
36    let extracted = extractor.extract()?;
37    let parsed = parser::parse(extracted)?;
38    Ok(parsed)
39}