polyte_gamma/api/
series.rs1use polyte_core::{QueryBuilder, Request};
2use reqwest::Client;
3use url::Url;
4
5use crate::{error::GammaError, types::SeriesData};
6
7#[derive(Clone)]
9pub struct Series {
10 pub(crate) client: Client,
11 pub(crate) base_url: Url,
12}
13
14impl Series {
15 pub fn list(&self) -> ListSeries {
17 ListSeries {
18 request: Request::new(self.client.clone(), self.base_url.clone(), "/series"),
19 }
20 }
21
22 pub fn get(&self, id: impl Into<String>) -> Request<SeriesData, GammaError> {
24 Request::new(
25 self.client.clone(),
26 self.base_url.clone(),
27 format!("/series/{}", urlencoding::encode(&id.into())),
28 )
29 }
30}
31
32pub struct ListSeries {
34 request: Request<Vec<SeriesData>, GammaError>,
35}
36
37impl ListSeries {
38 pub fn limit(mut self, limit: u32) -> Self {
40 self.request = self.request.query("limit", limit);
41 self
42 }
43
44 pub fn offset(mut self, offset: u32) -> Self {
46 self.request = self.request.query("offset", offset);
47 self
48 }
49
50 pub fn ascending(mut self, ascending: bool) -> Self {
52 self.request = self.request.query("ascending", ascending);
53 self
54 }
55
56 pub fn closed(mut self, closed: bool) -> Self {
58 self.request = self.request.query("closed", closed);
59 self
60 }
61
62 pub async fn send(self) -> crate::error::Result<Vec<SeriesData>> {
64 self.request.send().await
65 }
66}