polyte_gamma/api/
markets.rs1use reqwest::Client;
2use url::Url;
3
4use crate::{
5 request::{QueryBuilder, Request},
6 types::Market,
7};
8
9#[derive(Clone)]
11pub struct Markets {
12 pub(crate) client: Client,
13 pub(crate) base_url: Url,
14}
15
16impl Markets {
17 pub fn get(&self, id: impl Into<String>) -> Request<Market> {
19 Request::new(
20 self.client.clone(),
21 self.base_url.clone(),
22 format!("/markets/{}", urlencoding::encode(&id.into())),
23 )
24 }
25
26 pub fn list(&self) -> ListMarkets {
28 ListMarkets {
29 request: Request::new(
30 self.client.clone(),
31 self.base_url.clone(),
32 "/markets".to_string(),
33 ),
34 }
35 }
36}
37
38pub struct ListMarkets {
40 request: Request<Vec<Market>>,
41}
42
43impl ListMarkets {
44 pub fn limit(mut self, limit: u32) -> Self {
46 self.request = self.request.query("limit", limit);
47 self
48 }
49
50 pub fn offset(mut self, offset: u32) -> Self {
52 self.request = self.request.query("offset", offset);
53 self
54 }
55
56 pub fn order(mut self, order: impl Into<String>) -> Self {
58 self.request = self.request.query("order", order.into());
59 self
60 }
61
62 pub fn ascending(mut self, ascending: bool) -> Self {
64 self.request = self.request.query("ascending", ascending);
65 self
66 }
67
68 pub fn id(mut self, ids: impl IntoIterator<Item = i64>) -> Self {
70 self.request = self.request.query_many("id", ids);
71 self
72 }
73
74 pub fn slug(mut self, slugs: impl IntoIterator<Item = impl ToString>) -> Self {
76 self.request = self.request.query_many("slug", slugs);
77 self
78 }
79
80 pub fn clob_token_ids(mut self, token_ids: impl IntoIterator<Item = impl ToString>) -> Self {
82 self.request = self.request.query_many("clob_token_ids", token_ids);
83 self
84 }
85
86 pub fn condition_ids(mut self, condition_ids: impl IntoIterator<Item = impl ToString>) -> Self {
88 self.request = self.request.query_many("condition_ids", condition_ids);
89 self
90 }
91
92 pub fn market_maker_address(
94 mut self,
95 addresses: impl IntoIterator<Item = impl ToString>,
96 ) -> Self {
97 self.request = self.request.query_many("market_maker_address", addresses);
98 self
99 }
100
101 pub fn liquidity_num_min(mut self, min: f64) -> Self {
103 self.request = self.request.query("liquidity_num_min", min);
104 self
105 }
106
107 pub fn liquidity_num_max(mut self, max: f64) -> Self {
109 self.request = self.request.query("liquidity_num_max", max);
110 self
111 }
112
113 pub fn volume_num_min(mut self, min: f64) -> Self {
115 self.request = self.request.query("volume_num_min", min);
116 self
117 }
118
119 pub fn volume_num_max(mut self, max: f64) -> Self {
121 self.request = self.request.query("volume_num_max", max);
122 self
123 }
124
125 pub fn start_date_min(mut self, date: impl Into<String>) -> Self {
127 self.request = self.request.query("start_date_min", date.into());
128 self
129 }
130
131 pub fn start_date_max(mut self, date: impl Into<String>) -> Self {
133 self.request = self.request.query("start_date_max", date.into());
134 self
135 }
136
137 pub fn end_date_min(mut self, date: impl Into<String>) -> Self {
139 self.request = self.request.query("end_date_min", date.into());
140 self
141 }
142
143 pub fn end_date_max(mut self, date: impl Into<String>) -> Self {
145 self.request = self.request.query("end_date_max", date.into());
146 self
147 }
148
149 pub fn tag_id(mut self, tag_id: i64) -> Self {
151 self.request = self.request.query("tag_id", tag_id);
152 self
153 }
154
155 pub fn related_tags(mut self, include: bool) -> Self {
157 self.request = self.request.query("related_tags", include);
158 self
159 }
160
161 pub fn cyom(mut self, cyom: bool) -> Self {
163 self.request = self.request.query("cyom", cyom);
164 self
165 }
166
167 pub fn uma_resolution_status(mut self, status: impl Into<String>) -> Self {
169 self.request = self.request.query("uma_resolution_status", status.into());
170 self
171 }
172
173 pub fn game_id(mut self, game_id: impl Into<String>) -> Self {
175 self.request = self.request.query("game_id", game_id.into());
176 self
177 }
178
179 pub fn sports_market_types(mut self, types: impl IntoIterator<Item = impl ToString>) -> Self {
181 self.request = self.request.query_many("sports_market_types", types);
182 self
183 }
184
185 pub fn rewards_min_size(mut self, min: f64) -> Self {
187 self.request = self.request.query("rewards_min_size", min);
188 self
189 }
190
191 pub fn question_ids(mut self, question_ids: impl IntoIterator<Item = impl ToString>) -> Self {
193 self.request = self.request.query_many("question_ids", question_ids);
194 self
195 }
196
197 pub fn include_tag(mut self, include: bool) -> Self {
199 self.request = self.request.query("include_tag", include);
200 self
201 }
202
203 pub fn closed(mut self, closed: bool) -> Self {
205 self.request = self.request.query("closed", closed);
206 self
207 }
208
209 pub fn active(mut self, active: bool) -> Self {
211 self.request = self.request.query("closed", !active);
212 self
213 }
214
215 pub fn archived(mut self, archived: bool) -> Self {
217 self.request = self.request.query("archived", archived);
218 self
219 }
220
221 pub async fn send(self) -> crate::error::Result<Vec<Market>> {
223 self.request.send().await
224 }
225}