polyte_gamma/api/
events.rs1use reqwest::Client;
2use url::Url;
3
4use crate::{
5 request::{QueryBuilder, Request},
6 types::Event,
7};
8
9#[derive(Clone)]
11pub struct Events {
12 pub(crate) client: Client,
13 pub(crate) base_url: Url,
14}
15
16impl Events {
17 pub fn list(&self) -> ListEvents {
19 ListEvents {
20 request: Request::new(
21 self.client.clone(),
22 self.base_url.clone(),
23 "/events".to_string(),
24 ),
25 }
26 }
27
28 pub fn get(&self, id: impl Into<String>) -> Request<Event> {
30 Request::new(
31 self.client.clone(),
32 self.base_url.clone(),
33 format!("/events/{}", urlencoding::encode(&id.into())),
34 )
35 }
36
37 pub fn get_by_slug(&self, slug: impl Into<String>) -> Request<Event> {
39 Request::new(
40 self.client.clone(),
41 self.base_url.clone(),
42 format!("/events/slug/{}", urlencoding::encode(&slug.into())),
43 )
44 }
45
46 pub fn get_related_by_slug(&self, slug: impl Into<String>) -> Request<Vec<Event>> {
48 Request::new(
49 self.client.clone(),
50 self.base_url.clone(),
51 format!("/events/slug/{}/related", urlencoding::encode(&slug.into())),
52 )
53 }
54}
55
56pub struct ListEvents {
58 request: Request<Vec<Event>>,
59}
60
61impl ListEvents {
62 pub fn limit(mut self, limit: u32) -> Self {
64 self.request = self.request.query("limit", limit);
65 self
66 }
67
68 pub fn offset(mut self, offset: u32) -> Self {
70 self.request = self.request.query("offset", offset);
71 self
72 }
73
74 pub fn order(mut self, order: impl Into<String>) -> Self {
76 self.request = self.request.query("order", order.into());
77 self
78 }
79
80 pub fn ascending(mut self, ascending: bool) -> Self {
82 self.request = self.request.query("ascending", ascending);
83 self
84 }
85
86 pub fn id(mut self, ids: impl IntoIterator<Item = i64>) -> Self {
88 self.request = self.request.query_many("id", ids);
89 self
90 }
91
92 pub fn tag_id(mut self, tag_id: i64) -> Self {
94 self.request = self.request.query("tag_id", tag_id);
95 self
96 }
97
98 pub fn exclude_tag_id(mut self, tag_ids: impl IntoIterator<Item = i64>) -> Self {
100 self.request = self.request.query_many("exclude_tag_id", tag_ids);
101 self
102 }
103
104 pub fn slug(mut self, slugs: impl IntoIterator<Item = impl ToString>) -> Self {
106 self.request = self.request.query_many("slug", slugs);
107 self
108 }
109
110 pub fn tag_slug(mut self, slug: impl Into<String>) -> Self {
112 self.request = self.request.query("tag_slug", slug.into());
113 self
114 }
115
116 pub fn related_tags(mut self, include: bool) -> Self {
118 self.request = self.request.query("related_tags", include);
119 self
120 }
121
122 pub fn active(mut self, active: bool) -> Self {
124 self.request = self.request.query("active", active);
125 self
126 }
127
128 pub fn archived(mut self, archived: bool) -> Self {
130 self.request = self.request.query("archived", archived);
131 self
132 }
133
134 pub fn featured(mut self, featured: bool) -> Self {
136 self.request = self.request.query("featured", featured);
137 self
138 }
139
140 pub fn cyom(mut self, cyom: bool) -> Self {
142 self.request = self.request.query("cyom", cyom);
143 self
144 }
145
146 pub fn include_chat(mut self, include: bool) -> Self {
148 self.request = self.request.query("include_chat", include);
149 self
150 }
151
152 pub fn include_template(mut self, include: bool) -> Self {
154 self.request = self.request.query("include_template", include);
155 self
156 }
157
158 pub fn recurrence(mut self, recurrence: impl Into<String>) -> Self {
160 self.request = self.request.query("recurrence", recurrence.into());
161 self
162 }
163
164 pub fn closed(mut self, closed: bool) -> Self {
166 self.request = self.request.query("closed", closed);
167 self
168 }
169
170 pub fn liquidity_min(mut self, min: f64) -> Self {
172 self.request = self.request.query("liquidity_min", min);
173 self
174 }
175
176 pub fn liquidity_max(mut self, max: f64) -> Self {
178 self.request = self.request.query("liquidity_max", max);
179 self
180 }
181
182 pub fn volume_min(mut self, min: f64) -> Self {
184 self.request = self.request.query("volume_min", min);
185 self
186 }
187
188 pub fn volume_max(mut self, max: f64) -> Self {
190 self.request = self.request.query("volume_max", max);
191 self
192 }
193
194 pub fn start_date_min(mut self, date: impl Into<String>) -> Self {
196 self.request = self.request.query("start_date_min", date.into());
197 self
198 }
199
200 pub fn start_date_max(mut self, date: impl Into<String>) -> Self {
202 self.request = self.request.query("start_date_max", date.into());
203 self
204 }
205
206 pub fn end_date_min(mut self, date: impl Into<String>) -> Self {
208 self.request = self.request.query("end_date_min", date.into());
209 self
210 }
211
212 pub fn end_date_max(mut self, date: impl Into<String>) -> Self {
214 self.request = self.request.query("end_date_max", date.into());
215 self
216 }
217
218 pub async fn send(self) -> crate::error::Result<Vec<Event>> {
220 self.request.send().await
221 }
222}