yandex_rasp_rs/
lib.rs

1pub mod enums;
2pub mod errors;
3mod handle_response;
4mod schedule;
5mod search;
6mod stations_list;
7mod thread;
8mod constants;
9
10pub use crate::schedule::schedule_response::ScheduleResponse;
11pub use crate::schedule::ScheduleRequestBuilder;
12pub use crate::search::search_response::SearchResponse;
13pub use crate::search::SearchRequestBuilder;
14pub use crate::stations_list::stations_list_response::StationsListResponse;
15pub use crate::stations_list::StationsListRequestBuilder;
16use crate::thread::ThreadRequestBuilder;
17
18/// Основной клиент для взаимодействия с API
19#[derive(Clone)]
20pub struct YaRaspClient {
21    api_key: String,
22    reqwest_client: reqwest::Client,
23}
24
25impl YaRaspClient {
26    /// Создать новый экзепляр клиента, используя переданный API ключ
27    pub fn new(api_key: &str) -> YaRaspClient {
28        Self {
29            api_key: String::from(api_key),
30            reqwest_client: reqwest::Client::new(),
31        }
32    }
33
34    /// Возвращает конструктор запроса на поиск расписания между станциями, код которых был передан
35    pub fn search(&self, from: &str, to: &str) -> SearchRequestBuilder {
36        SearchRequestBuilder::new(self.clone(), from.to_string(), to.to_string())
37    }
38
39    /// Возвращает конструктор запроса на поиск расписания для станции, чей код был передан
40    pub fn schedule(&self, station: &str) -> ScheduleRequestBuilder {
41        ScheduleRequestBuilder::new(self.clone(), station.to_string())
42    }
43
44    pub fn thread(&self, thread_uid: &str) -> ThreadRequestBuilder {
45        ThreadRequestBuilder::new(self.clone(), thread_uid)
46    }
47
48    /// Возвращает конструктор запроса на получения списка всех станций из API.
49    /// Можно использовать для поиска кода станции по её названию
50    pub fn stations_list(&self) -> StationsListRequestBuilder {
51        StationsListRequestBuilder::new(self.clone())
52    }
53}