1use std::rc::Rc;
12use std::borrow::Borrow;
13use std::borrow::Cow;
14use std::collections::HashMap;
15
16use hyper;
17use serde_json;
18use futures;
19use futures::{Future, Stream};
20
21use hyper::header::UserAgent;
22
23use super::{Error, configuration};
24
25pub struct AddressesApiClient<C: hyper::client::Connect> {
26 configuration: Rc<configuration::Configuration<C>>,
27}
28
29impl<C: hyper::client::Connect> AddressesApiClient<C> {
30 pub fn new(configuration: Rc<configuration::Configuration<C>>) -> AddressesApiClient<C> {
31 AddressesApiClient {
32 configuration: configuration,
33 }
34 }
35}
36
37pub trait AddressesApi {
38 fn get_address_balance(&self, address: &str) -> Box<Future<Item = ::models::ResponsesGetAddressBalance, Error = Error<serde_json::Value>>>;
39 fn get_address_non_inscription_utxos(&self, address: &str) -> Box<Future<Item = ::models::ResponsesGetAddressNonInscriptionUtxo, Error = Error<serde_json::Value>>>;
40 fn get_address_rune_balance(&self, address: &str, runeid: &str) -> Box<Future<Item = ::models::ResponsesGetAddressRuneBalance, Error = Error<serde_json::Value>>>;
41 fn get_address_runes_balance_list(&self, address: &str) -> Box<Future<Item = ::models::ResponsesGetAddressRunesBalanceList, Error = Error<serde_json::Value>>>;
42 fn get_address_timeframe_balance(&self, address: &str, timeframe: &str, token: &str) -> Box<Future<Item = ::models::ResponsesGetAddressTimeframeBalance, Error = Error<serde_json::Value>>>;
43}
44
45
46impl<C: hyper::client::Connect>AddressesApi for AddressesApiClient<C> {
47 fn get_address_balance(&self, address: &str) -> Box<Future<Item = ::models::ResponsesGetAddressBalance, Error = Error<serde_json::Value>>> {
48 let configuration: &configuration::Configuration<C> = self.configuration.borrow();
49
50 let mut auth_headers = HashMap::<String, String>::new();
51 let mut auth_query = HashMap::<String, String>::new();
52 if let Some(ref apikey) = configuration.api_key {
53 let key = apikey.key.clone();
54 let val = match apikey.prefix {
55 Some(ref prefix) => format!("{} {}", prefix, key),
56 None => key,
57 };
58 auth_headers.insert("X-API-KEY".to_owned(), val);
59 };
60 let method = hyper::Method::Get;
61
62 let query_string = {
63 let mut query = ::url::form_urlencoded::Serializer::new(String::new());
64 for (key, val) in &auth_query {
65 query.append_pair(key, val);
66 }
67 query.finish()
68 };
69 let uri_str = format!("{}/addresses/{address}/balance?{}", configuration.base_path, query_string, address=address);
70
71 let mut uri: hyper::Uri = uri_str.parse().unwrap();
76
77 let mut req = hyper::Request::new(method, uri);
78
79 if let Some(ref user_agent) = configuration.user_agent {
80 req.headers_mut().set(UserAgent::new(Cow::Owned(user_agent.clone())));
81 }
82
83
84 for (key, val) in auth_headers {
85 req.headers_mut().set_raw(key, val);
86 }
87
88
89 Box::new(
91 configuration.client.request(req)
92 .map_err(|e| Error::from(e))
93 .and_then(|resp| {
94 let status = resp.status();
95 resp.body().concat2()
96 .and_then(move |body| Ok((status, body)))
97 .map_err(|e| Error::from(e))
98 })
99 .and_then(|(status, body)| {
100 if status.is_success() {
101 Ok(body)
102 } else {
103 Err(Error::from((status, &*body)))
104 }
105 })
106 .and_then(|body| {
107 let parsed: Result<::models::ResponsesGetAddressBalance, _> = serde_json::from_slice(&body);
108 parsed.map_err(|e| Error::from(e))
109 })
110 )
111 }
112
113 fn get_address_non_inscription_utxos(&self, address: &str) -> Box<Future<Item = ::models::ResponsesGetAddressNonInscriptionUtxo, Error = Error<serde_json::Value>>> {
114 let configuration: &configuration::Configuration<C> = self.configuration.borrow();
115
116 let mut auth_headers = HashMap::<String, String>::new();
117 let mut auth_query = HashMap::<String, String>::new();
118 if let Some(ref apikey) = configuration.api_key {
119 let key = apikey.key.clone();
120 let val = match apikey.prefix {
121 Some(ref prefix) => format!("{} {}", prefix, key),
122 None => key,
123 };
124 auth_headers.insert("X-API-KEY".to_owned(), val);
125 };
126 let method = hyper::Method::Get;
127
128 let query_string = {
129 let mut query = ::url::form_urlencoded::Serializer::new(String::new());
130 for (key, val) in &auth_query {
131 query.append_pair(key, val);
132 }
133 query.finish()
134 };
135 let uri_str = format!("{}/addresses/{address}/utxos?{}", configuration.base_path, query_string, address=address);
136
137 let mut uri: hyper::Uri = uri_str.parse().unwrap();
142
143 let mut req = hyper::Request::new(method, uri);
144
145 if let Some(ref user_agent) = configuration.user_agent {
146 req.headers_mut().set(UserAgent::new(Cow::Owned(user_agent.clone())));
147 }
148
149
150 for (key, val) in auth_headers {
151 req.headers_mut().set_raw(key, val);
152 }
153
154
155 Box::new(
157 configuration.client.request(req)
158 .map_err(|e| Error::from(e))
159 .and_then(|resp| {
160 let status = resp.status();
161 resp.body().concat2()
162 .and_then(move |body| Ok((status, body)))
163 .map_err(|e| Error::from(e))
164 })
165 .and_then(|(status, body)| {
166 if status.is_success() {
167 Ok(body)
168 } else {
169 Err(Error::from((status, &*body)))
170 }
171 })
172 .and_then(|body| {
173 let parsed: Result<::models::ResponsesGetAddressNonInscriptionUtxo, _> = serde_json::from_slice(&body);
174 parsed.map_err(|e| Error::from(e))
175 })
176 )
177 }
178
179 fn get_address_rune_balance(&self, address: &str, runeid: &str) -> Box<Future<Item = ::models::ResponsesGetAddressRuneBalance, Error = Error<serde_json::Value>>> {
180 let configuration: &configuration::Configuration<C> = self.configuration.borrow();
181
182 let mut auth_headers = HashMap::<String, String>::new();
183 let mut auth_query = HashMap::<String, String>::new();
184 if let Some(ref apikey) = configuration.api_key {
185 let key = apikey.key.clone();
186 let val = match apikey.prefix {
187 Some(ref prefix) => format!("{} {}", prefix, key),
188 None => key,
189 };
190 auth_headers.insert("X-API-KEY".to_owned(), val);
191 };
192 let method = hyper::Method::Get;
193
194 let query_string = {
195 let mut query = ::url::form_urlencoded::Serializer::new(String::new());
196 for (key, val) in &auth_query {
197 query.append_pair(key, val);
198 }
199 query.finish()
200 };
201 let uri_str = format!("{}/addresses/{address}/runes/{runeid}?{}", configuration.base_path, query_string, address=address, runeid=runeid);
202
203 let mut uri: hyper::Uri = uri_str.parse().unwrap();
208
209 let mut req = hyper::Request::new(method, uri);
210
211 if let Some(ref user_agent) = configuration.user_agent {
212 req.headers_mut().set(UserAgent::new(Cow::Owned(user_agent.clone())));
213 }
214
215
216 for (key, val) in auth_headers {
217 req.headers_mut().set_raw(key, val);
218 }
219
220
221 Box::new(
223 configuration.client.request(req)
224 .map_err(|e| Error::from(e))
225 .and_then(|resp| {
226 let status = resp.status();
227 resp.body().concat2()
228 .and_then(move |body| Ok((status, body)))
229 .map_err(|e| Error::from(e))
230 })
231 .and_then(|(status, body)| {
232 if status.is_success() {
233 Ok(body)
234 } else {
235 Err(Error::from((status, &*body)))
236 }
237 })
238 .and_then(|body| {
239 let parsed: Result<::models::ResponsesGetAddressRuneBalance, _> = serde_json::from_slice(&body);
240 parsed.map_err(|e| Error::from(e))
241 })
242 )
243 }
244
245 fn get_address_runes_balance_list(&self, address: &str) -> Box<Future<Item = ::models::ResponsesGetAddressRunesBalanceList, Error = Error<serde_json::Value>>> {
246 let configuration: &configuration::Configuration<C> = self.configuration.borrow();
247
248 let mut auth_headers = HashMap::<String, String>::new();
249 let mut auth_query = HashMap::<String, String>::new();
250 if let Some(ref apikey) = configuration.api_key {
251 let key = apikey.key.clone();
252 let val = match apikey.prefix {
253 Some(ref prefix) => format!("{} {}", prefix, key),
254 None => key,
255 };
256 auth_headers.insert("X-API-KEY".to_owned(), val);
257 };
258 let method = hyper::Method::Get;
259
260 let query_string = {
261 let mut query = ::url::form_urlencoded::Serializer::new(String::new());
262 for (key, val) in &auth_query {
263 query.append_pair(key, val);
264 }
265 query.finish()
266 };
267 let uri_str = format!("{}/addresses/{address}/runes?{}", configuration.base_path, query_string, address=address);
268
269 let mut uri: hyper::Uri = uri_str.parse().unwrap();
274
275 let mut req = hyper::Request::new(method, uri);
276
277 if let Some(ref user_agent) = configuration.user_agent {
278 req.headers_mut().set(UserAgent::new(Cow::Owned(user_agent.clone())));
279 }
280
281
282 for (key, val) in auth_headers {
283 req.headers_mut().set_raw(key, val);
284 }
285
286
287 Box::new(
289 configuration.client.request(req)
290 .map_err(|e| Error::from(e))
291 .and_then(|resp| {
292 let status = resp.status();
293 resp.body().concat2()
294 .and_then(move |body| Ok((status, body)))
295 .map_err(|e| Error::from(e))
296 })
297 .and_then(|(status, body)| {
298 if status.is_success() {
299 Ok(body)
300 } else {
301 Err(Error::from((status, &*body)))
302 }
303 })
304 .and_then(|body| {
305 let parsed: Result<::models::ResponsesGetAddressRunesBalanceList, _> = serde_json::from_slice(&body);
306 parsed.map_err(|e| Error::from(e))
307 })
308 )
309 }
310
311 fn get_address_timeframe_balance(&self, address: &str, timeframe: &str, token: &str) -> Box<Future<Item = ::models::ResponsesGetAddressTimeframeBalance, Error = Error<serde_json::Value>>> {
312 let configuration: &configuration::Configuration<C> = self.configuration.borrow();
313
314 let mut auth_headers = HashMap::<String, String>::new();
315 let mut auth_query = HashMap::<String, String>::new();
316 if let Some(ref apikey) = configuration.api_key {
317 let key = apikey.key.clone();
318 let val = match apikey.prefix {
319 Some(ref prefix) => format!("{} {}", prefix, key),
320 None => key,
321 };
322 auth_headers.insert("X-API-KEY".to_owned(), val);
323 };
324 let method = hyper::Method::Get;
325
326 let query_string = {
327 let mut query = ::url::form_urlencoded::Serializer::new(String::new());
328 query.append_pair("token", &token.to_string());
329 query.append_pair("timeframe", &timeframe.to_string());
330 for (key, val) in &auth_query {
331 query.append_pair(key, val);
332 }
333 query.finish()
334 };
335 let uri_str = format!("{}/addresses/{address}/balance/timeframe?{}", configuration.base_path, query_string, address=address);
336
337 let mut uri: hyper::Uri = uri_str.parse().unwrap();
342
343 let mut req = hyper::Request::new(method, uri);
344
345 if let Some(ref user_agent) = configuration.user_agent {
346 req.headers_mut().set(UserAgent::new(Cow::Owned(user_agent.clone())));
347 }
348
349
350 for (key, val) in auth_headers {
351 req.headers_mut().set_raw(key, val);
352 }
353
354
355 Box::new(
357 configuration.client.request(req)
358 .map_err(|e| Error::from(e))
359 .and_then(|resp| {
360 let status = resp.status();
361 resp.body().concat2()
362 .and_then(move |body| Ok((status, body)))
363 .map_err(|e| Error::from(e))
364 })
365 .and_then(|(status, body)| {
366 if status.is_success() {
367 Ok(body)
368 } else {
369 Err(Error::from((status, &*body)))
370 }
371 })
372 .and_then(|body| {
373 let parsed: Result<::models::ResponsesGetAddressTimeframeBalance, _> = serde_json::from_slice(&body);
374 parsed.map_err(|e| Error::from(e))
375 })
376 )
377 }
378
379}