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#[derive(Clone)]
20pub struct YaRaspClient {
21 api_key: String,
22 reqwest_client: reqwest::Client,
23}
24
25impl YaRaspClient {
26 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 pub fn search(&self, from: &str, to: &str) -> SearchRequestBuilder {
36 SearchRequestBuilder::new(self.clone(), from.to_string(), to.to_string())
37 }
38
39 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 pub fn stations_list(&self) -> StationsListRequestBuilder {
51 StationsListRequestBuilder::new(self.clone())
52 }
53}