@@ -15,10 +15,10 @@ impl ExchangeApi for BitstampApi {
15
15
16
16
let result = self . return_ticker ( pair) ?;
17
17
18
- let price = helpers:: from_json_float ( & result[ "last" ] , "last" ) ?;
19
- let ask = helpers:: from_json_float ( & result[ "ask" ] , "ask" ) ?;
20
- let bid = helpers:: from_json_float ( & result[ "bid" ] , "bid" ) ?;
21
- let vol = helpers:: from_json_float ( & result[ "volume" ] , "volume" ) ?;
18
+ let price = helpers:: from_json_bigdecimal ( & result[ "last" ] , "last" ) ?;
19
+ let ask = helpers:: from_json_bigdecimal ( & result[ "ask" ] , "ask" ) ?;
20
+ let bid = helpers:: from_json_bigdecimal ( & result[ "bid" ] , "bid" ) ?;
21
+ let vol = helpers:: from_json_bigdecimal ( & result[ "volume" ] , "volume" ) ?;
22
22
23
23
Ok ( Ticker {
24
24
timestamp : helpers:: get_unix_timestamp_ms ( ) ,
@@ -49,31 +49,16 @@ impl ExchangeApi for BitstampApi {
49
49
. ok_or_else ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , result[ "asks" ] ) ) ) ?;
50
50
51
51
for ask in ask_array {
52
- let price = ask[ 0 ]
53
- . as_str ( )
54
- . ok_or_else ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , ask[ 0 ] ) ) ) ?
55
- . parse :: < f64 > ( )
56
- . chain_err ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , ask[ 0 ] ) ) ) ?;
57
-
58
- let volume = ask[ 1 ]
59
- . as_str ( )
60
- . ok_or_else ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , ask[ 1 ] ) ) ) ?
61
- . parse :: < f64 > ( )
62
- . chain_err ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , ask[ 1 ] ) ) ) ?;
52
+ let price = helpers:: from_json_bigdecimal ( & ask[ 0 ] , "ask price" ) ?;
53
+ let volume = helpers:: from_json_bigdecimal ( & ask[ 1 ] , "ask volume" ) ?;
54
+
63
55
ask_offers. push ( ( price, volume) ) ;
64
56
}
65
57
66
58
for bid in bid_array {
67
- let price = bid[ 0 ]
68
- . as_str ( )
69
- . ok_or_else ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , bid[ 0 ] ) ) ) ?
70
- . parse :: < f64 > ( )
71
- . chain_err ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , bid[ 0 ] ) ) ) ?;
72
- let volume = bid[ 1 ]
73
- . as_str ( )
74
- . ok_or_else ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , bid[ 1 ] ) ) ) ?
75
- . parse :: < f64 > ( )
76
- . chain_err ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , bid[ 1 ] ) ) ) ?;
59
+ let price = helpers:: from_json_bigdecimal ( & bid[ 0 ] , "bid price" ) ?;
60
+ let volume = helpers:: from_json_bigdecimal ( & bid[ 1 ] , "bid volume" ) ?;
61
+
77
62
bid_offers. push ( ( price, volume) ) ;
78
63
}
79
64
@@ -140,10 +125,7 @@ impl ExchangeApi for BitstampApi {
140
125
141
126
match currency {
142
127
Some ( c) => {
143
- let amount = val. as_str ( )
144
- . ok_or_else ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , val) ) ) ?
145
- . parse :: < f64 > ( )
146
- . chain_err ( || ErrorKind :: InvalidFieldFormat ( format ! ( "{}" , val) ) ) ?;
128
+ let amount = helpers:: from_json_bigdecimal ( & val, "amount" ) ?;
147
129
148
130
balances. insert ( c, amount) ;
149
131
} ,
0 commit comments