tg_api/
client.rs

1use crate::{
2    methods::{self, file::FileMessage},
3    ImageMessage, TextMessage,
4};
5use serde_json::Value;
6
7pub struct Configurations {
8    token: String,
9    custom_url: Option<String>,
10}
11impl Configurations {
12    pub fn new(token: String, custom_url: Option<String>) -> Configurations {
13        Configurations { token, custom_url }
14    }
15}
16
17pub struct Client {
18    // Each bot is given a unique authentication token when it is created. The token looks something like 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. You can learn about obtaining tokens and generating new ones in this document.
19    base_url: String,
20}
21impl Client {
22    pub fn new(configurations: Configurations) -> Client {
23        let base_url = match configurations.custom_url {
24            Some(custom_url) => format!("{}/bot{}", custom_url, configurations.token),
25            None => format!("https://api.telegram.org/bot{}", configurations.token),
26        };
27        Client { base_url }
28    }
29    pub fn send_text(&self, message: TextMessage) -> Result<(), &'static str> {
30        methods::text::send(message, &self.base_url)
31    }
32    pub fn send_image(&self, message: ImageMessage) -> Result<(), &'static str> {
33        methods::image::send(message, &self.base_url)
34    }
35    pub fn send_file(&self, message: FileMessage) -> Result<(), &'static str> {
36        methods::file::send(message, &self.base_url)
37    }
38    pub fn get_update(&self, offset: Option<u64>) -> Result<Value, &'static str> {
39        methods::updates::get(&self.base_url, offset)
40    }
41}