@@ -6,27 +6,17 @@ use serde::{Deserialize, Serialize};
66use serde_json:: { Value , json} ;
77use serde_with:: { DisplayFromStr , serde_as} ;
88use thiserror:: Error ;
9- use v_exchanges_adapters:: bybit:: { BybitHttpUrl , BybitOption } ;
9+ use v_exchanges_adapters:: {
10+ bybit:: { BybitHttpUrl , BybitOption } ,
11+ errors:: LimitOutOfRangeError ,
12+ } ;
1013use v_utils:: {
1114 trades:: { Kline , Ohlc , Pair , Timeframe } ,
1215 utils:: filter_nulls,
1316} ;
1417
1518use crate :: core:: { Klines , KlinesRequestRange } ;
1619
17- //MOVE: centralized error module
18- #[ derive( Debug ) ]
19- struct LimitOutOfRangeError {
20- allowed : std:: ops:: RangeInclusive < u32 > ,
21- provided : u32 ,
22- }
23- impl fmt:: Display for LimitOutOfRangeError {
24- fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
25- write ! ( f, "Limit out of range. Allowed: {:?}, provided: {}" , self . allowed, self . provided)
26- }
27- }
28- impl std:: error:: Error for LimitOutOfRangeError { }
29-
3020pub async fn klines ( client : & v_exchanges_adapters:: Client , pair : Pair , tf : Timeframe , range : KlinesRequestRange ) -> Result < Klines > {
3121 let range_json = match range {
3222 KlinesRequestRange :: StartEnd { start, end } => json ! ( {
@@ -36,11 +26,7 @@ pub async fn klines(client: &v_exchanges_adapters::Client, pair: Pair, tf: Timef
3626 KlinesRequestRange :: Limit ( limit) => {
3727 let allowed_range = 1 ..=1000 ;
3828 if !allowed_range. contains ( & limit) {
39- return Err ( LimitOutOfRangeError {
40- allowed : allowed_range,
41- provided : limit,
42- }
43- . into ( ) ) ;
29+ return Err ( LimitOutOfRangeError :: new ( allowed_range, limit) . into ( ) ) ;
4430 }
4531 json ! ( {
4632 "limit" : limit,
0 commit comments