@@ -39,14 +39,18 @@ protected override async Task OnGetNonceOffset()
39
39
var timeFaster = now - serverDate ;
40
40
if ( timeFaster <= TimeSpan . Zero )
41
41
{
42
- timeWindow = ( timeFaster . Negate ( ) . TotalSeconds * 10 ) . ToString ( ) ;
42
+ timeWindow = ( timeFaster . Negate ( ) . TotalSeconds * 10 ) . ToStringInvariant ( ) ;
43
43
NonceOffset = TimeSpan . FromSeconds ( 2.5 ) ;
44
44
}
45
45
else
46
+ {
46
47
NonceOffset = now - serverDate ; // how much time to substract from Nonce when making a request
48
+ }
49
+ }
50
+ catch
51
+ {
52
+ // eat exception
47
53
}
48
- catch ( Exception )
49
- { }
50
54
}
51
55
52
56
protected override async Task ProcessRequestAsync ( IHttpWebRequest request , Dictionary < string , object > payload )
@@ -67,7 +71,7 @@ protected override async Task ProcessRequestAsync(IHttpWebRequest request, Dicti
67
71
string signature = CryptoUtility . SHA256Sign ( query , CryptoUtility . ToUnsecureBytesUTF8 ( PrivateApiKey ) ) ;
68
72
request . AddHeader ( "ACCESS-KEY" , PublicApiKey . ToUnsecureString ( ) ) ;
69
73
request . AddHeader ( "ACCESS-SIGN" , signature ) ;
70
- request . AddHeader ( "ACCESS-TIMESTAMP" , nonce . ToString ( ) ) ;
74
+ request . AddHeader ( "ACCESS-TIMESTAMP" , nonce . ToStringInvariant ( ) ) ;
71
75
if ( timeWindow != null )
72
76
request . AddHeader ( "ACCESS-RECV-WINDOW" , timeWindow ) ;
73
77
@@ -113,8 +117,8 @@ ExchangeMarket ParseSymbol(JToken x)
113
117
QuoteCurrency = quoteCurrency ,
114
118
PriceStepSize = new decimal ( 1 , 0 , 0 , false , ( byte ) x [ "price_precision" ] ) ,
115
119
QuantityStepSize = new decimal ( 1 , 0 , 0 , false , ( byte ) x [ "volume_precision" ] ) ,
116
- MinTradeSize = ( decimal ) x [ "min_volume" ] ,
117
- MinTradeSizeInQuoteCurrency = ( decimal ) x [ "min_amount" ] ,
120
+ MinTradeSize = x [ "min_volume" ] . ConvertInvariant < decimal > ( ) ,
121
+ MinTradeSizeInQuoteCurrency = x [ "min_amount" ] . ConvertInvariant < decimal > ( ) ,
118
122
} ;
119
123
}
120
124
@@ -138,16 +142,16 @@ ExchangeTicker ParseTicker(JToken x)
138
142
139
143
return new ExchangeTicker
140
144
{
141
- Ask = ( decimal ) t [ "sell" ] ,
142
- Bid = ( decimal ) t [ "buy" ] ,
143
- Last = ( decimal ) t [ "last" ] ,
145
+ Ask = t [ "sell" ] . ConvertInvariant < decimal > ( ) ,
146
+ Bid = t [ "buy" ] . ConvertInvariant < decimal > ( ) ,
147
+ Last = t [ "last" ] . ConvertInvariant < decimal > ( ) ,
144
148
MarketSymbol = symbol ,
145
149
Volume = new ExchangeVolume
146
150
{
147
151
BaseCurrency = baseCurrency ,
148
152
QuoteCurrency = quoteCurrency ,
149
- QuoteCurrencyVolume = ( decimal ) t [ "base_vol" ] ,
150
- BaseCurrencyVolume = ( decimal ) t [ "vol" ] ,
153
+ QuoteCurrencyVolume = t [ "base_vol" ] . ConvertInvariant < decimal > ( ) ,
154
+ BaseCurrencyVolume = t [ "vol" ] . ConvertInvariant < decimal > ( ) ,
151
155
Timestamp = CryptoUtility . UnixTimeStampToDateTimeSeconds ( x [ "date" ] . ConvertInvariant < long > ( ) ) ,
152
156
} ,
153
157
} ;
@@ -174,11 +178,11 @@ protected override async Task<IEnumerable<ExchangeTrade>> OnGetRecentTradesAsync
174
178
return obj [ "data" ] . Select ( x => new ExchangeTrade
175
179
{
176
180
Id = x [ "id" ] . ToStringInvariant ( ) ,
177
- Amount = ( decimal ) x [ "amount" ] ,
178
- Price = ( decimal ) x [ "price" ] ,
179
- IsBuy = x [ "type" ] . ToStringInvariant ( ) != "sell" ,
181
+ Amount = x [ "amount" ] . ConvertInvariant < decimal > ( ) ,
182
+ Price = x [ "price" ] . ConvertInvariant < decimal > ( ) ,
183
+ IsBuy = x [ "type" ] . ToStringLowerInvariant ( ) != "sell" ,
180
184
Timestamp = CryptoUtility . UnixTimeStampToDateTimeSeconds ( x [ "date" ] . ConvertInvariant < long > ( ) ) ,
181
- Flags = x [ "type" ] . ToStringInvariant ( ) == "sell" ? default : ExchangeTradeFlags . IsBuy ,
185
+ Flags = x [ "type" ] . ToStringLowerInvariant ( ) == "sell" ? default : ExchangeTradeFlags . IsBuy ,
182
186
} ) ;
183
187
}
184
188
@@ -190,7 +194,7 @@ protected override async Task<IEnumerable<MarketCandle>> OnGetCandlesAsync(
190
194
191
195
string period ;
192
196
if ( periodSeconds <= 60 * 720 )
193
- period = ( periodSeconds / 60 ) . ToString ( ) ;
197
+ period = ( periodSeconds / 60 ) . ToStringInvariant ( ) ;
194
198
else if ( periodSeconds == 24 * 60 * 60 )
195
199
period = "1D" ;
196
200
else if ( periodSeconds == 7 * 24 * 60 * 60 )
@@ -208,11 +212,11 @@ protected override async Task<IEnumerable<MarketCandle>> OnGetCandlesAsync(
208
212
return obj [ "data" ] . Select ( x => new MarketCandle
209
213
{
210
214
Timestamp = CryptoUtility . UnixTimeStampToDateTimeSeconds ( x [ 0 ] . ConvertInvariant < long > ( ) ) ,
211
- BaseCurrencyVolume = ( double ) x [ 1 ] ,
212
- ClosePrice = ( decimal ) x [ 2 ] ,
213
- HighPrice = ( decimal ) x [ 3 ] ,
214
- LowPrice = ( decimal ) x [ 4 ] ,
215
- OpenPrice = ( decimal ) x [ 5 ] ,
215
+ BaseCurrencyVolume = x [ 1 ] . ConvertInvariant < double > ( ) ,
216
+ ClosePrice = x [ 2 ] . ConvertInvariant < decimal > ( ) ,
217
+ HighPrice = x [ 3 ] . ConvertInvariant < decimal > ( ) ,
218
+ LowPrice = x [ 4 ] . ConvertInvariant < decimal > ( ) ,
219
+ OpenPrice = x [ 5 ] . ConvertInvariant < decimal > ( ) ,
216
220
} ) ;
217
221
}
218
222
@@ -253,15 +257,15 @@ protected override async Task<IEnumerable<ExchangeOrderResult>> OnGetOpenOrderDe
253
257
var list = token [ "data" ] ;
254
258
return list . Select ( x => new ExchangeOrderResult
255
259
{
256
- MarketSymbol = x [ "symbol" ] . ToStringInvariant ( ) ,
260
+ MarketSymbol = x [ "symbol" ] . ToStringUpperInvariant ( ) ,
257
261
OrderId = x [ "order_id" ] . ToStringInvariant ( ) ,
258
262
OrderDate = CryptoUtility . UnixTimeStampToDateTimeSeconds ( x [ "created_date" ] . ConvertInvariant < long > ( ) ) ,
259
263
FillDate = CryptoUtility . UnixTimeStampToDateTimeSeconds ( x [ "finished_date" ] . ConvertInvariant < long > ( ) ) ,
260
- Price = ( decimal ) x [ "price" ] ,
261
- AveragePrice = ( decimal ) x [ "avg_price" ] ,
262
- Amount = ( decimal ) x [ "amount" ] ,
263
- AmountFilled = ( decimal ) x [ "executed_amount" ] ,
264
- IsBuy = x [ "type" ] . ToStringInvariant ( ) == "buy" ,
264
+ Price = x [ "price" ] . ConvertInvariant < decimal > ( ) ,
265
+ AveragePrice = x [ "avg_price" ] . ConvertInvariant < decimal > ( ) ,
266
+ Amount = x [ "amount" ] . ConvertInvariant < decimal > ( ) ,
267
+ AmountFilled = x [ "executed_amount" ] . ConvertInvariant < decimal > ( ) ,
268
+ IsBuy = x [ "type" ] . ToStringLowerInvariant ( ) == "buy" ,
265
269
Result = ParseOrderStatus ( x [ "status" ] ) ,
266
270
} ) ;
267
271
}
@@ -278,22 +282,22 @@ protected override async Task<IEnumerable<ExchangeOrderResult>> OnGetCompletedOr
278
282
if ( afterDate != null )
279
283
{
280
284
var startTime = ( long ) afterDate . Value . UnixTimestampFromDateTimeSeconds ( ) ;
281
- url += "&start_time=" + startTime . ToString ( ) ;
285
+ url += "&start_time=" + startTime . ToStringInvariant ( ) ;
282
286
}
283
287
284
288
JToken token = await MakeJsonRequestAsync < JToken > ( url , payload : payload ) ;
285
289
var list = token [ "list" ] ;
286
290
return list . Select ( x => new ExchangeOrderResult
287
291
{
288
- MarketSymbol = x [ "symbol" ] . ToStringInvariant ( ) ,
292
+ MarketSymbol = x [ "symbol" ] . ToStringUpperInvariant ( ) ,
289
293
OrderId = x [ "order_id" ] . ToStringInvariant ( ) ,
290
294
TradeId = x [ "id" ] . ToStringInvariant ( ) ,
291
- Price = ( decimal ) x [ "price" ] ,
292
- AmountFilled = ( decimal ) x [ "amount" ] ,
293
- Fees = ( decimal ) x [ "fee" ] ,
295
+ Price = x [ "price" ] . ConvertInvariant < decimal > ( ) ,
296
+ AmountFilled = x [ "amount" ] . ConvertInvariant < decimal > ( ) ,
297
+ Fees = x [ "fee" ] . ConvertInvariant < decimal > ( ) ,
294
298
FeesCurrency = x [ "fee_currency" ] . ToStringInvariant ( ) ,
295
299
FillDate = CryptoUtility . UnixTimeStampToDateTimeSeconds ( x [ "timestamp" ] . ConvertInvariant < long > ( ) ) ,
296
- IsBuy = x [ "side" ] . ToStringInvariant ( ) == "buy" ,
300
+ IsBuy = x [ "side" ] . ToStringLowerInvariant ( ) == "buy" ,
297
301
Result = ExchangeAPIOrderResult . Unknown ,
298
302
} ) ;
299
303
}
@@ -305,15 +309,15 @@ protected override async Task<ExchangeOrderResult> OnGetOrderDetailsAsync(string
305
309
var x = token [ "data" ] ;
306
310
return new ExchangeOrderResult
307
311
{
308
- MarketSymbol = x [ "symbol" ] . ToStringInvariant ( ) ,
312
+ MarketSymbol = x [ "symbol" ] . ToStringUpperInvariant ( ) ,
309
313
OrderId = x [ "order_id" ] . ToStringInvariant ( ) ,
310
314
OrderDate = CryptoUtility . UnixTimeStampToDateTimeSeconds ( x [ "created_date" ] . ConvertInvariant < long > ( ) ) ,
311
315
FillDate = CryptoUtility . UnixTimeStampToDateTimeSeconds ( x [ "finished_date" ] . ConvertInvariant < long > ( ) ) ,
312
- Price = ( decimal ) x [ "price" ] ,
313
- AveragePrice = ( decimal ) x [ "avg_price" ] ,
314
- Amount = ( decimal ) x [ "amount" ] ,
315
- AmountFilled = ( decimal ) x [ "executed_amount" ] ,
316
- IsBuy = x [ "type" ] . ToStringInvariant ( ) == "buy" ,
316
+ Price = x [ "price" ] . ConvertInvariant < decimal > ( ) ,
317
+ AveragePrice = x [ "avg_price" ] . ConvertInvariant < decimal > ( ) ,
318
+ Amount = x [ "amount" ] . ConvertInvariant < decimal > ( ) ,
319
+ AmountFilled = x [ "executed_amount" ] . ConvertInvariant < decimal > ( ) ,
320
+ IsBuy = x [ "type" ] . ToStringLowerInvariant ( ) == "buy" ,
317
321
Result = ParseOrderStatus ( x [ "status" ] ) ,
318
322
} ;
319
323
}
@@ -323,15 +327,15 @@ protected override async Task<Dictionary<string, decimal>> OnGetAmountsAsync()
323
327
Dictionary < string , object > payload = await GetNoncePayloadAsync ( ) ;
324
328
JToken token = await MakeJsonRequestAsync < JToken > ( "/spot/assets" , payload : payload ) ;
325
329
var list = token [ "list" ] ;
326
- return list . Where ( x => ( decimal ) x [ "total" ] != 0 ) . ToDictionary ( x => x [ "currency" ] . ToStringInvariant ( ) , x => ( decimal ) x [ "total" ] ) ;
330
+ return list . Where ( x => x [ "total" ] . ConvertInvariant < decimal > ( ) != 0m ) . ToDictionary ( x => x [ "currency" ] . ToStringUpperInvariant ( ) , x => x [ "total" ] . ConvertInvariant < decimal > ( ) ) ;
327
331
}
328
332
329
333
protected override async Task < Dictionary < string , decimal > > OnGetAmountsAvailableToTradeAsync ( )
330
334
{
331
335
Dictionary < string , object > payload = await GetNoncePayloadAsync ( ) ;
332
336
JToken token = await MakeJsonRequestAsync < JToken > ( "/spot/assets" , payload : payload ) ;
333
337
var list = token [ "list" ] ;
334
- return list . Where ( x => ( decimal ) x [ "free" ] != 0 ) . ToDictionary ( x => x [ "currency" ] . ToStringInvariant ( ) , x => ( decimal ) x [ "free" ] ) ;
338
+ return list . Where ( x => x [ "free" ] . ConvertInvariant < decimal > ( ) != 0m ) . ToDictionary ( x => x [ "currency" ] . ToStringUpperInvariant ( ) , x => x [ "free" ] . ConvertInvariant < decimal > ( ) ) ;
335
339
}
336
340
337
341
string GetOrderType ( ExchangeOrderRequest order )
@@ -408,18 +412,18 @@ protected override IWebSocket OnGetTradesWebSocket(Func<KeyValuePair<string, Exc
408
412
// "id": null
409
413
// }
410
414
JToken token = JToken . Parse ( CryptoUtility . DecompressDeflate ( ( new ArraySegment < byte > ( msg , 2 , msg . Length - 2 ) ) . ToArray ( ) ) . ToStringFromUTF8 ( ) ) ;
411
- if ( token [ "method" ] . ToStringInvariant ( ) == "trades.update" )
415
+ if ( token [ "method" ] . ToStringLowerInvariant ( ) == "trades.update" )
412
416
{
413
417
var args = token [ "params" ] ;
414
418
var clean = ( bool ) args [ 0 ] ;
415
419
var trades = args [ 1 ] ;
416
- var symbol = args [ 2 ] . ToStringInvariant ( ) ;
420
+ var symbol = args [ 2 ] . ToStringUpperInvariant ( ) ;
417
421
418
422
var x = trades as JArray ;
419
423
for ( int i = 0 ; i < x . Count ; i ++ )
420
424
{
421
425
var trade = x [ i ] ;
422
- var isbuy = trade [ "type" ] . ToStringInvariant ( ) != "sell" ;
426
+ var isbuy = trade [ "type" ] . ToStringLowerInvariant ( ) != "sell" ;
423
427
var flags = default ( ExchangeTradeFlags ) ;
424
428
if ( isbuy )
425
429
flags |= ExchangeTradeFlags . IsBuy ;
@@ -432,9 +436,9 @@ await callback.Invoke(new KeyValuePair<string, ExchangeTrade>(
432
436
symbol , new ExchangeTrade
433
437
{
434
438
Id = trade [ "id" ] . ToStringInvariant ( ) ,
435
- Timestamp = CryptoUtility . UnixTimeStampToDateTimeSeconds ( 0 ) . AddSeconds ( ( double ) trade [ "time" ] ) ,
436
- Price = ( decimal ) trade [ "price" ] ,
437
- Amount = ( decimal ) trade [ "amount" ] ,
439
+ Timestamp = CryptoUtility . UnixTimeStampToDateTimeSeconds ( 0 ) . AddSeconds ( trade [ "time" ] . ConvertInvariant < double > ( ) ) ,
440
+ Price = trade [ "price" ] . ConvertInvariant < decimal > ( ) ,
441
+ Amount = trade [ "amount" ] . ConvertInvariant < decimal > ( ) ,
438
442
IsBuy = isbuy ,
439
443
Flags = flags ,
440
444
} ) ) ;
@@ -487,20 +491,20 @@ protected override IWebSocket OnGetDeltaOrderBookWebSocket(Action<ExchangeOrderB
487
491
// "id": null
488
492
//}
489
493
JToken token = JToken . Parse ( CryptoUtility . DecompressDeflate ( ( new ArraySegment < byte > ( msg , 2 , msg . Length - 2 ) ) . ToArray ( ) ) . ToStringFromUTF8 ( ) ) ;
490
- if ( token [ "method" ] . ToStringInvariant ( ) == "depth.update" )
494
+ if ( token [ "method" ] . ToStringLowerInvariant ( ) == "depth.update" )
491
495
{
492
496
var args = token [ "params" ] ;
493
497
var data = args [ 1 ] ;
494
- var book = new ExchangeOrderBook { LastUpdatedUtc = CryptoUtility . UtcNow , MarketSymbol = args [ 2 ] . ToStringInvariant ( ) } ;
498
+ var book = new ExchangeOrderBook { LastUpdatedUtc = CryptoUtility . UtcNow , MarketSymbol = args [ 2 ] . ToStringUpperInvariant ( ) } ;
495
499
foreach ( var x in data [ "asks" ] )
496
500
{
497
- var price = ( decimal ) x [ 0 ] ;
498
- book . Asks [ price ] = new ExchangeOrderPrice { Price = price , Amount = ( decimal ) x [ 1 ] } ;
501
+ var price = x [ 0 ] . ConvertInvariant < decimal > ( ) ;
502
+ book . Asks [ price ] = new ExchangeOrderPrice { Price = price , Amount = x [ 1 ] . ConvertInvariant < decimal > ( ) } ;
499
503
}
500
504
foreach ( var x in data [ "bids" ] )
501
505
{
502
- var price = ( decimal ) x [ 0 ] ;
503
- book . Bids [ price ] = new ExchangeOrderPrice { Price = price , Amount = ( decimal ) x [ 1 ] } ;
506
+ var price = x [ 0 ] . ConvertInvariant < decimal > ( ) ;
507
+ book . Bids [ price ] = new ExchangeOrderPrice { Price = price , Amount = x [ 1 ] . ConvertInvariant < decimal > ( ) } ;
504
508
}
505
509
callback ( book ) ;
506
510
}
0 commit comments