Skip to content

Commit d00bb2c

Browse files
committed
refactor: _
1 parent cf29ed1 commit d00bb2c

File tree

7 files changed

+80
-63
lines changed

7 files changed

+80
-63
lines changed

Cargo.lock

Lines changed: 44 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

v_exchanges/src/main.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ async fn main() {
1010

1111
let mut client = Client::new();
1212

13-
//client.update_default_option(BinanceOption::HttpUrl(BinanceHttpUrl::FuturesUsdM));
14-
//let klines = client.futures_klines(("BTC", "USDT").into(), "1m".into(), None, None, None).await.unwrap();
15-
//let price = client.futures_price(("BTC", "USDT").into()).await.unwrap();
16-
//dbg!(&klines);
13+
client.update_default_option(BinanceOption::HttpUrl(BinanceHttpUrl::FuturesUsdM));
14+
let klines = client.futures_klines(("BTC", "USDT").into(), "1m".into(), 2, None, None).await.unwrap();
15+
let price = client.futures_price(("BTC", "USDT").into()).await.unwrap();
16+
dbg!(&klines, price);
1717

18-
let key = env::var("BINANCE_TIGER_READ_KEY").unwrap();
19-
let secret = env::var("BINANCE_TIGER_READ_SECRET").unwrap();
20-
client.update_default_option(BinanceOption::Key(key));
21-
client.update_default_option(BinanceOption::Secret(secret));
22-
let balance = client.futures_asset_balance("USDT".into()).await.unwrap();
23-
dbg!(&balance);
18+
//let key = env::var("BINANCE_TIGER_READ_KEY").unwrap();
19+
//let secret = env::var("BINANCE_TIGER_READ_SECRET").unwrap();
20+
//client.update_default_option(BinanceOption::Key(key));
21+
//client.update_default_option(BinanceOption::Secret(secret));
22+
//let balance = client.futures_asset_balance("USDT".into()).await.unwrap();
23+
//dbg!(&balance);
2424
}

v_exchanges_adapters/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ impl Client {
7878

7979
/// see [http::Client::get()]
8080
#[inline(always)]
81-
pub async fn get<'a, R, O, Q>(&self, url: &str, query: Option<&Q>, options: impl IntoIterator<Item = O>) -> request_return_type!('a, R, O, ())
81+
pub async fn get<'a, R, O, Q>(&self, url: &str, query: &Q, options: impl IntoIterator<Item = O>) -> request_return_type!('a, R, O, ())
8282
where
8383
O: HttpOption<'a, R, ()>,
8484
O::RequestHandler: RequestHandler<()>,
@@ -99,7 +99,7 @@ impl Client {
9999

100100
/// see [http::Client::post()]
101101
#[inline(always)]
102-
pub async fn post<'a, R, O, B>(&self, url: &str, body: Option<B>, options: impl IntoIterator<Item = O>) -> request_return_type!('a, R, O, B)
102+
pub async fn post<'a, R, O, B>(&self, url: &str, body: B, options: impl IntoIterator<Item = O>) -> request_return_type!('a, R, O, B)
103103
where
104104
O: HttpOption<'a, R, B>,
105105
O::RequestHandler: RequestHandler<B>,
@@ -119,7 +119,7 @@ impl Client {
119119

120120
/// see [http::Client::put()]
121121
#[inline(always)]
122-
pub async fn put<'a, R, O, B>(&self, url: &str, body: Option<B>, options: impl IntoIterator<Item = O>) -> request_return_type!('a, R, O, B)
122+
pub async fn put<'a, R, O, B>(&self, url: &str, body: B, options: impl IntoIterator<Item = O>) -> request_return_type!('a, R, O, B)
123123
where
124124
O: HttpOption<'a, R, B>,
125125
O::RequestHandler: RequestHandler<B>,
@@ -139,7 +139,7 @@ impl Client {
139139

140140
/// see [http::Client::delete()]
141141
#[inline(always)]
142-
pub async fn delete<'a, R, O, Q>(&self, url: &str, query: Option<&Q>, options: impl IntoIterator<Item = O>) -> request_return_type!('a, R, O, ())
142+
pub async fn delete<'a, R, O, Q>(&self, url: &str, query: &Q, options: impl IntoIterator<Item = O>) -> request_return_type!('a, R, O, ())
143143
where
144144
O: HttpOption<'a, R, ()>,
145145
O::RequestHandler: RequestHandler<()>,

v_exchanges_api_generics/src/http.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ impl Client {
8181
///
8282
/// For more information, see [request()][Self::request()].
8383
#[inline(always)]
84-
pub async fn get<Q, H>(&self, url: &str, query: Option<&Q>, handler: &H) -> Result<H::Successful, RequestError<H::BuildError, H::Unsuccessful>>
84+
pub async fn get<Q, H>(&self, url: &str, query: &Q, handler: &H) -> Result<H::Successful, RequestError<H::BuildError, H::Unsuccessful>>
8585
where
8686
Q: Serialize + ?Sized,
8787
H: RequestHandler<()>, {
88-
self.request::<Q, (), H>(Method::GET, url, query, None, handler).await
88+
self.request::<Q, (), H>(Method::GET, url, Some(query), None, handler).await
8989
}
9090

9191
/// Makes an GET request with the given [RequestHandler], without queries.
@@ -107,10 +107,10 @@ impl Client {
107107
///
108108
/// For more information, see [request()][Self::request()].
109109
#[inline(always)]
110-
pub async fn post<B, H>(&self, url: &str, body: Option<B>, handler: &H) -> Result<H::Successful, RequestError<H::BuildError, H::Unsuccessful>>
110+
pub async fn post<B, H>(&self, url: &str, body: B, handler: &H) -> Result<H::Successful, RequestError<H::BuildError, H::Unsuccessful>>
111111
where
112112
H: RequestHandler<B>, {
113-
self.request::<(), B, H>(Method::POST, url, None, body, handler).await
113+
self.request::<(), B, H>(Method::POST, url, None, Some(body), handler).await
114114
}
115115

116116
/// Makes an POST request with the given [RequestHandler], without a body.
@@ -132,10 +132,10 @@ impl Client {
132132
///
133133
/// For more information, see [request()][Self::request()].
134134
#[inline(always)]
135-
pub async fn put<B, H>(&self, url: &str, body: Option<B>, handler: &H) -> Result<H::Successful, RequestError<H::BuildError, H::Unsuccessful>>
135+
pub async fn put<B, H>(&self, url: &str, body: B, handler: &H) -> Result<H::Successful, RequestError<H::BuildError, H::Unsuccessful>>
136136
where
137137
H: RequestHandler<B>, {
138-
self.request::<(), B, H>(Method::PUT, url, None, body, handler).await
138+
self.request::<(), B, H>(Method::PUT, url, None, Some(body), handler).await
139139
}
140140

141141
/// Makes an PUT request with the given [RequestHandler], without a body.
@@ -158,11 +158,11 @@ impl Client {
158158
///
159159
/// For more information, see [request()][Self::request()].
160160
#[inline(always)]
161-
pub async fn delete<Q, H>(&self, url: &str, query: Option<&Q>, handler: &H) -> Result<H::Successful, RequestError<H::BuildError, H::Unsuccessful>>
161+
pub async fn delete<Q, H>(&self, url: &str, query: &Q, handler: &H) -> Result<H::Successful, RequestError<H::BuildError, H::Unsuccessful>>
162162
where
163163
Q: Serialize + ?Sized,
164164
H: RequestHandler<()>, {
165-
self.request::<Q, (), H>(Method::DELETE, url, query, None, handler).await
165+
self.request::<Q, (), H>(Method::DELETE, url, Some(query), None, handler).await
166166
}
167167

168168
/// Makes an DELETE request with the given [RequestHandler], without queries.

v_exchanges_deser/src/binance/futures/market.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,24 @@ use serde::{Deserialize, Serialize};
55
use serde_json::{Value, json};
66
use serde_with::{DisplayFromStr, serde_as};
77
use v_exchanges_adapters::binance::{BinanceHttpUrl, BinanceOption};
8-
use v_utils::trades::{Kline, Ohlc, Pair, Timeframe};
8+
use v_utils::{
9+
trades::{Kline, Ohlc, Pair, Timeframe},
10+
utils::filter_nulls,
11+
};
912

1013
use crate::core::Klines;
1114

1215
// klines {{{
13-
pub async fn klines(client: &v_exchanges_adapters::Client, pair: Pair, tf: Timeframe, limit: Option<u32>, start_time: Option<u64>, end_time: Option<u64>) -> Result<Klines> {
14-
let params = json!({
16+
pub async fn klines(client: &v_exchanges_adapters::Client, pair: Pair, tf: Timeframe, limit: u32, start_time: Option<u64>, end_time: Option<u64>) -> Result<Klines> {
17+
let mut params = filter_nulls(json!({
1518
"symbol": pair.to_string(),
1619
"interval": tf.format_binance()?,
1720
"limit": limit,
1821
"startTime": start_time,
1922
"endTime": end_time,
20-
});
23+
}));
2124

22-
let kline_responses: Vec<KlineResponse> = client.get("/fapi/v1/klines", Some(&params), [BinanceOption::HttpUrl(BinanceHttpUrl::FuturesUsdM)]).await.unwrap();
25+
let kline_responses: Vec<KlineResponse> = client.get("/fapi/v1/klines", &params, [BinanceOption::HttpUrl(BinanceHttpUrl::FuturesUsdM)]).await.unwrap();
2326
let klines: Vec<Kline> = kline_responses.into_iter().map(Kline::from).collect();
2427

2528
Ok(Klines { v: klines, tf, oi: Vec::new() })
@@ -78,16 +81,11 @@ impl From<KlineResponse> for Kline {
7881
// price {{{
7982
//HACK: not sure this is _the_ thing to use for that (throwing away A LOT of data)
8083
pub async fn price(client: &v_exchanges_adapters::Client, pair: Pair) -> Result<f64> {
81-
#[derive(Serialize)]
82-
pub struct PriceParams {
83-
pub symbol: String,
84-
}
85-
let mut params = PriceParams { symbol: pair.to_string() };
84+
let mut params = json!({
85+
"symbol": pair.to_string(),
86+
});
8687

87-
let r: MarkPriceResponse = client
88-
.get("/fapi/v1/premiumIndex", Some(&params), [BinanceOption::HttpUrl(BinanceHttpUrl::FuturesUsdM)])
89-
.await
90-
.unwrap();
88+
let r: MarkPriceResponse = client.get("/fapi/v1/premiumIndex", &params, [BinanceOption::HttpUrl(BinanceHttpUrl::FuturesUsdM)]).await.unwrap();
9189
let price = r.index_price; // when using this framework, we care for per-exchange price, obviously
9290
Ok(price)
9391
}

v_exchanges_deser/src/binance/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use crate::core::{AssetBalance, Exchange, Klines};
88

99
//? currently client ends up importing this from crate::binance, but could it be possible to lift the [Client] reexport up, and still have the ability to call all exchange methods right on it?
1010
impl Exchange<binance::BinanceOptions> for Client {
11-
async fn futures_klines(&self, symbol: Pair, tf: Timeframe, limit: Option<u32>, start_time: Option<u64>, end_time: Option<u64>) -> Result<Klines> {
11+
async fn futures_klines(&self, symbol: Pair, tf: Timeframe, limit: u32, start_time: Option<u64>, end_time: Option<u64>) -> Result<Klines> {
1212
futures::market::klines(&self, symbol, tf, limit, start_time, end_time).await
1313
}
1414

v_exchanges_deser/src/core.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use v_utils::trades::{Asset, Kline, Pair, Timeframe};
66

77
pub trait Exchange<O: HandlerOptions> {
88
//? should I have Self::Pair too? Like to catch the non-existent ones immediately? Although this would increase the error surface on new listings.
9-
fn futures_klines(&self, symbol: Pair, tf: Timeframe, limit: Option<u32>, start_time: Option<u64>, end_time: Option<u64>) -> impl std::future::Future<Output = Result<Klines>> + Send;
9+
fn futures_klines(&self, symbol: Pair, tf: Timeframe, limit: u32, start_time: Option<u64>, end_time: Option<u64>) -> impl std::future::Future<Output = Result<Klines>> + Send;
1010
fn futures_price(&self, symbol: Pair) -> impl std::future::Future<Output = Result<f64>> + Send;
1111

1212
// Defined in terms of actors

0 commit comments

Comments
 (0)