1use crate::gecko;
2use crate::gecko::vec_str_2_comma_str;
3use crate::types::Response;
4use serde_json;
5
6pub fn price(
8 ids: Vec<&str>,
9 vs_currencies: Vec<&str>,
10 include_market_cap: Option<bool>,
11 include_24hr_vol: Option<bool>,
12 include_24hr_change: Option<bool>,
13 include_last_updated_at: Option<bool>,
14) -> Response<serde_json::Value> {
15 let endpoint = "/simple/price?".to_string();
16 let ids_str: String = ["ids", &vec_str_2_comma_str(ids)].join("=");
17 let vs_currencies_str: String =
18 ["vs_currencies", &vec_str_2_comma_str(vs_currencies)].join("=");
19
20 let mut params = [ids_str, vs_currencies_str].join("&");
21
22 let imc = include_market_cap.unwrap_or(false);
23 let i24v = include_24hr_vol.unwrap_or(false);
24 let i24c = include_24hr_change.unwrap_or(false);
25 let ilu = include_last_updated_at.unwrap_or(false);
26
27 if imc {
28 params.push_str("&include_market_cap=true");
29 }
30 if i24v {
31 params.push_str("&include_24hr_vol=true");
32 }
33
34 if i24c {
35 params.push_str("&include_24hr_change=true");
36 }
37
38 if ilu {
39 params.push_str("&include_last_updated_at=true");
40 }
41
42 let response = gecko::get_request(&endpoint, ¶ms);
43 response
44}
45
46pub fn token_price(
48 id: &str,
49 contract_addresses: Vec<&str>,
50 vs_currencies: Vec<&str>,
51 include_market_cap: Option<bool>,
52 include_24hr_vol: Option<bool>,
53 include_24hr_change: Option<bool>,
54 include_last_updated_at: Option<bool>,
55) -> Response<serde_json::Value> {
56 let endpoint = ["/simple/token_price/", id, "?"].join("");
57
58 let contract_addresses: String = [
59 "contract_addresses",
60 &vec_str_2_comma_str(contract_addresses),
61 ]
62 .join("=");
63 let vs_currencies_str: String =
64 ["vs_currencies", &vec_str_2_comma_str(vs_currencies)].join("=");
65
66 let mut params = [contract_addresses, vs_currencies_str].join("&");
67
68 let imc = include_market_cap.unwrap_or(false);
69 let i24v = include_24hr_vol.unwrap_or(false);
70 let i24c = include_24hr_change.unwrap_or(false);
71 let ilu = include_last_updated_at.unwrap_or(false);
72
73 if imc {
74 params.push_str("&include_market_cap=true");
75 }
76 if i24v {
77 params.push_str("&include_24hr_vol=true");
78 }
79
80 if i24c {
81 params.push_str("&include_24hr_change=true");
82 }
83
84 if ilu {
85 params.push_str("&include_last_updated_at=true");
86 }
87
88 let response = gecko::get_request(&endpoint, ¶ms);
89 response
90}
91
92pub fn supported_vs_currencies() -> Response<serde_json::Value> {
94 let endpoint = "/simple/supported_vs_currencies";
95 let response = gecko::get_request(&endpoint, "");
96 response
97}