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 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}