use crate::{
methods::{self, file::FileMessage},
ImageMessage, TextMessage,
};
use serde_json::Value;
pub struct Configurations {
token: String,
custom_url: Option<String>,
}
impl Configurations {
pub fn new(token: String, custom_url: Option<String>) -> Configurations {
Configurations { token, custom_url }
}
}
pub struct Client {
base_url: String,
}
impl Client {
pub fn new(configurations: Configurations) -> Client {
let base_url = match configurations.custom_url {
Some(custom_url) => format!("{}/bot{}", custom_url, configurations.token),
None => format!("https://api.telegram.org/bot{}", configurations.token),
};
Client { base_url }
}
pub fn send_text(&self, message: TextMessage) -> Result<(), &'static str> {
methods::text::send(message, &self.base_url)
}
pub fn send_image(&self, message: ImageMessage) -> Result<(), &'static str> {
methods::image::send(message, &self.base_url)
}
pub fn send_file(&self, message: FileMessage) -> Result<(), &'static str> {
methods::file::send(message, &self.base_url)
}
pub fn get_update(&self, offset: Option<u64>) -> Result<Value, &'static str> {
methods::updates::get(&self.base_url, offset)
}
}