ccxt 4.1.69 → 4.1.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/js/src/gate.js CHANGED
@@ -2238,11 +2238,16 @@ export default class gate extends Exchange {
2238
2238
  if (limit !== undefined) {
2239
2239
  request['limit'] = limit;
2240
2240
  }
2241
- const method = this.getSupportedMapping(type, {
2242
- 'swap': 'privateFuturesGetSettleAccountBook',
2243
- 'future': 'privateDeliveryGetSettleAccountBook',
2244
- });
2245
- const response = await this[method](this.extend(request, requestParams));
2241
+ let response = undefined;
2242
+ if (type === 'swap') {
2243
+ response = await this.privateFuturesGetSettleAccountBook(this.extend(request, requestParams));
2244
+ }
2245
+ else if (type === 'future') {
2246
+ response = await this.privateDeliveryGetSettleAccountBook(this.extend(request, requestParams));
2247
+ }
2248
+ else {
2249
+ throw new NotSupported(this.id + ' fetchFundingHistory() only support swap & future market type');
2250
+ }
2246
2251
  //
2247
2252
  // [
2248
2253
  // {
@@ -2315,18 +2320,26 @@ export default class gate extends Exchange {
2315
2320
  // };
2316
2321
  //
2317
2322
  const [request, query] = this.prepareRequest(market, market['type'], params);
2318
- const method = this.getSupportedMapping(market['type'], {
2319
- 'spot': 'publicSpotGetOrderBook',
2320
- 'margin': 'publicSpotGetOrderBook',
2321
- 'swap': 'publicFuturesGetSettleOrderBook',
2322
- 'future': 'publicDeliveryGetSettleOrderBook',
2323
- 'option': 'publicOptionsGetOrderBook',
2324
- });
2325
2323
  if (limit !== undefined) {
2326
2324
  request['limit'] = limit; // default 10, max 100
2327
2325
  }
2328
2326
  request['with_id'] = true;
2329
- const response = await this[method](this.extend(request, query));
2327
+ let response = undefined;
2328
+ if (market['spot'] || market['margin']) {
2329
+ response = await this.publicSpotGetOrderBook(this.extend(request, query));
2330
+ }
2331
+ else if (market['swap']) {
2332
+ response = await this.publicFuturesGetSettleOrderBook(this.extend(request, query));
2333
+ }
2334
+ else if (market['future']) {
2335
+ response = await this.publicDeliveryGetSettleOrderBook(this.extend(request, query));
2336
+ }
2337
+ else if (market['option']) {
2338
+ response = await this.publicOptionsGetOrderBook(this.extend(request, query));
2339
+ }
2340
+ else {
2341
+ throw new NotSupported(this.id + ' fetchOrderBook() not support this market type');
2342
+ }
2330
2343
  //
2331
2344
  // spot
2332
2345
  //
@@ -2418,19 +2431,25 @@ export default class gate extends Exchange {
2418
2431
  await this.loadMarkets();
2419
2432
  const market = this.market(symbol);
2420
2433
  const [request, query] = this.prepareRequest(market, undefined, params);
2421
- const method = this.getSupportedMapping(market['type'], {
2422
- 'spot': 'publicSpotGetTickers',
2423
- 'margin': 'publicSpotGetTickers',
2424
- 'swap': 'publicFuturesGetSettleTickers',
2425
- 'future': 'publicDeliveryGetSettleTickers',
2426
- 'option': 'publicOptionsGetTickers',
2427
- });
2428
- if (market['option']) {
2434
+ let response = undefined;
2435
+ if (market['spot'] || market['margin']) {
2436
+ response = await this.publicSpotGetTickers(this.extend(request, query));
2437
+ }
2438
+ else if (market['swap']) {
2439
+ response = await this.publicFuturesGetSettleTickers(this.extend(request, query));
2440
+ }
2441
+ else if (market['future']) {
2442
+ response = await this.publicDeliveryGetSettleTickers(this.extend(request, query));
2443
+ }
2444
+ else if (market['option']) {
2429
2445
  const marketId = market['id'];
2430
2446
  const optionParts = marketId.split('-');
2431
2447
  request['underlying'] = this.safeString(optionParts, 0);
2448
+ response = await this.publicOptionsGetTickers(this.extend(request, query));
2449
+ }
2450
+ else {
2451
+ throw new NotSupported(this.id + ' fetchTicker() not support this market type');
2432
2452
  }
2433
- const response = await this[method](this.extend(request, query));
2434
2453
  let ticker = undefined;
2435
2454
  if (market['option']) {
2436
2455
  for (let i = 0; i < response.length; i++) {
@@ -2580,20 +2599,26 @@ export default class gate extends Exchange {
2580
2599
  }
2581
2600
  const [type, query] = this.handleMarketTypeAndParams('fetchTickers', market, params);
2582
2601
  const [request, requestParams] = this.prepareRequest(undefined, type, query);
2583
- const method = this.getSupportedMapping(type, {
2584
- 'spot': 'publicSpotGetTickers',
2585
- 'margin': 'publicSpotGetTickers',
2586
- 'swap': 'publicFuturesGetSettleTickers',
2587
- 'future': 'publicDeliveryGetSettleTickers',
2588
- 'option': 'publicOptionsGetTickers',
2589
- });
2590
- if (type === 'option') {
2602
+ let response = undefined;
2603
+ if (type === 'spot' || type === 'margin') {
2604
+ response = await this.publicSpotGetTickers(this.extend(request, requestParams));
2605
+ }
2606
+ else if (type === 'swap') {
2607
+ response = await this.publicFuturesGetSettleTickers(this.extend(request, requestParams));
2608
+ }
2609
+ else if (type === 'future') {
2610
+ response = await this.publicDeliveryGetSettleTickers(this.extend(request, requestParams));
2611
+ }
2612
+ else if (type === 'option') {
2591
2613
  this.checkRequiredArgument('fetchTickers', symbols, 'symbols');
2592
2614
  const marketId = market['id'];
2593
2615
  const optionParts = marketId.split('-');
2594
2616
  request['underlying'] = this.safeString(optionParts, 0);
2617
+ response = await this.publicOptionsGetTickers(this.extend(request, requestParams));
2618
+ }
2619
+ else {
2620
+ throw new NotSupported(this.id + ' fetchTickers() not support this market type');
2595
2621
  }
2596
- const response = await this[method](this.extend(request, requestParams));
2597
2622
  return this.parseTickers(response, symbols);
2598
2623
  }
2599
2624
  parseBalanceHelper(entry) {
@@ -2624,18 +2649,36 @@ export default class gate extends Exchange {
2624
2649
  const market = this.market(symbol);
2625
2650
  request['currency_pair'] = market['id'];
2626
2651
  }
2627
- const method = this.getSupportedMapping(type, {
2628
- 'spot': this.getSupportedMapping(marginMode, {
2629
- 'spot': 'privateSpotGetAccounts',
2630
- 'margin': 'privateMarginGetAccounts',
2631
- 'cross_margin': 'privateMarginGetCrossAccounts',
2632
- }),
2633
- 'funding': 'privateMarginGetFundingAccounts',
2634
- 'swap': 'privateFuturesGetSettleAccounts',
2635
- 'future': 'privateDeliveryGetSettleAccounts',
2636
- 'option': 'privateOptionsGetAccounts',
2637
- });
2638
- let response = await this[method](this.extend(request, requestQuery));
2652
+ let response = undefined;
2653
+ if (type === 'spot') {
2654
+ if (marginMode === 'spot') {
2655
+ response = await this.privateSpotGetAccounts(this.extend(request, requestQuery));
2656
+ }
2657
+ else if (marginMode === 'margin') {
2658
+ response = await this.privateMarginGetAccounts(this.extend(request, requestQuery));
2659
+ }
2660
+ else if (marginMode === 'cross_margin') {
2661
+ response = await this.privateMarginGetCrossAccounts(this.extend(request, requestQuery));
2662
+ }
2663
+ else {
2664
+ throw new NotSupported(this.id + ' fetchBalance() not support this marginMode');
2665
+ }
2666
+ }
2667
+ else if (type === 'funding') {
2668
+ response = await this.privateMarginGetFundingAccounts(this.extend(request, requestQuery));
2669
+ }
2670
+ else if (type === 'swap') {
2671
+ response = await this.privateFuturesGetSettleAccounts(this.extend(request, requestQuery));
2672
+ }
2673
+ else if (type === 'future') {
2674
+ response = await this.privateDeliveryGetSettleAccounts(this.extend(request, requestQuery));
2675
+ }
2676
+ else if (type === 'option') {
2677
+ response = await this.privateOptionsGetAccounts(this.extend(request, requestQuery));
2678
+ }
2679
+ else {
2680
+ throw new NotSupported(this.id + ' fetchBalance() not support this market type');
2681
+ }
2639
2682
  const contract = ((type === 'swap') || (type === 'future') || (type === 'option'));
2640
2683
  if (contract) {
2641
2684
  response = [response];
@@ -2855,23 +2898,7 @@ export default class gate extends Exchange {
2855
2898
  let request = {};
2856
2899
  [request, params] = this.prepareRequest(market, undefined, params);
2857
2900
  request['interval'] = this.safeString(this.timeframes, timeframe, timeframe);
2858
- let method = 'publicSpotGetCandlesticks';
2859
2901
  let maxLimit = 1000;
2860
- if (market['contract']) {
2861
- maxLimit = 1999;
2862
- if (market['future']) {
2863
- method = 'publicDeliveryGetSettleCandlesticks';
2864
- }
2865
- else if (market['swap']) {
2866
- method = 'publicFuturesGetSettleCandlesticks';
2867
- }
2868
- const isMark = (price === 'mark');
2869
- const isIndex = (price === 'index');
2870
- if (isMark || isIndex) {
2871
- request['contract'] = price + '_' + market['id'];
2872
- params = this.omit(params, 'price');
2873
- }
2874
- }
2875
2902
  limit = (limit === undefined) ? maxLimit : Math.min(limit, maxLimit);
2876
2903
  let until = this.safeInteger(params, 'until');
2877
2904
  if (until !== undefined) {
@@ -2898,7 +2925,25 @@ export default class gate extends Exchange {
2898
2925
  }
2899
2926
  request['limit'] = limit;
2900
2927
  }
2901
- const response = await this[method](this.extend(request, params));
2928
+ let response = undefined;
2929
+ if (market['contract']) {
2930
+ maxLimit = 1999;
2931
+ const isMark = (price === 'mark');
2932
+ const isIndex = (price === 'index');
2933
+ if (isMark || isIndex) {
2934
+ request['contract'] = price + '_' + market['id'];
2935
+ params = this.omit(params, 'price');
2936
+ }
2937
+ if (market['future']) {
2938
+ response = await this.publicDeliveryGetSettleCandlesticks(this.extend(request, params));
2939
+ }
2940
+ else if (market['swap']) {
2941
+ response = await this.publicFuturesGetSettleCandlesticks(this.extend(request, params));
2942
+ }
2943
+ }
2944
+ else {
2945
+ response = await this.publicSpotGetCandlesticks(this.extend(request, params));
2946
+ }
2902
2947
  return this.parseOHLCVs(response, market, timeframe, since, limit);
2903
2948
  }
2904
2949
  async fetchOptionOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
@@ -2935,8 +2980,7 @@ export default class gate extends Exchange {
2935
2980
  if (limit !== undefined) {
2936
2981
  request['limit'] = limit;
2937
2982
  }
2938
- const method = 'publicFuturesGetSettleFundingRate';
2939
- const response = await this[method](this.extend(request, query));
2983
+ const response = await this.publicFuturesGetSettleFundingRate(this.extend(request, query));
2940
2984
  //
2941
2985
  // {
2942
2986
  // "r": "0.00063521",
@@ -3051,13 +3095,6 @@ export default class gate extends Exchange {
3051
3095
  // };
3052
3096
  //
3053
3097
  const [request, query] = this.prepareRequest(market, undefined, params);
3054
- const method = this.getSupportedMapping(market['type'], {
3055
- 'spot': 'publicSpotGetTrades',
3056
- 'margin': 'publicSpotGetTrades',
3057
- 'swap': 'publicFuturesGetSettleTrades',
3058
- 'future': 'publicDeliveryGetSettleTrades',
3059
- 'option': 'publicOptionsGetTrades',
3060
- });
3061
3098
  const until = this.safeInteger2(params, 'to', 'until');
3062
3099
  if (until !== undefined) {
3063
3100
  params = this.omit(params, ['until']);
@@ -3069,7 +3106,22 @@ export default class gate extends Exchange {
3069
3106
  if (since !== undefined && (market['contract'])) {
3070
3107
  request['from'] = this.parseToInt(since / 1000);
3071
3108
  }
3072
- const response = await this[method](this.extend(request, query));
3109
+ let response = undefined;
3110
+ if (market['type'] === 'spot' || market['type'] === 'margin') {
3111
+ response = await this.publicSpotGetTrades(this.extend(request, query));
3112
+ }
3113
+ else if (market['swap']) {
3114
+ response = await this.publicFuturesGetSettleTrades(this.extend(request, query));
3115
+ }
3116
+ else if (market['future']) {
3117
+ response = await this.publicDeliveryGetSettleTrades(this.extend(request, query));
3118
+ }
3119
+ else if (market['type'] === 'option') {
3120
+ response = await this.publicOptionsGetTrades(this.extend(request, query));
3121
+ }
3122
+ else {
3123
+ throw new NotSupported(this.id + ' fetchTrades() not support this market type.');
3124
+ }
3073
3125
  //
3074
3126
  // spot
3075
3127
  //
@@ -3215,14 +3267,22 @@ export default class gate extends Exchange {
3215
3267
  if (until !== undefined) {
3216
3268
  request['to'] = this.parseToInt(until / 1000);
3217
3269
  }
3218
- const method = this.getSupportedMapping(type, {
3219
- 'spot': 'privateSpotGetMyTrades',
3220
- 'margin': 'privateSpotGetMyTrades',
3221
- 'swap': 'privateFuturesGetSettleMyTradesTimerange',
3222
- 'future': 'privateDeliveryGetSettleMyTrades',
3223
- 'option': 'privateOptionsGetMyTrades',
3224
- });
3225
- const response = await this[method](this.extend(request, params));
3270
+ let response = undefined;
3271
+ if (type === 'spot' || type === 'margin') {
3272
+ response = await this.privateSpotGetMyTrades(this.extend(request, params));
3273
+ }
3274
+ else if (type === 'swap') {
3275
+ response = await this.privateFuturesGetSettleMyTradesTimerange(this.extend(request, params));
3276
+ }
3277
+ else if (type === 'future') {
3278
+ response = await this.privateDeliveryGetSettleMyTrades(this.extend(request, params));
3279
+ }
3280
+ else if (type === 'option') {
3281
+ response = await this.privateOptionsGetMyTrades(this.extend(request, params));
3282
+ }
3283
+ else {
3284
+ throw new NotSupported(this.id + ' fetchMyTrades() not support this market type.');
3285
+ }
3226
3286
  //
3227
3287
  // spot
3228
3288
  //
@@ -4473,15 +4533,37 @@ export default class gate extends Exchange {
4473
4533
  const contract = (type === 'swap') || (type === 'future') || (type === 'option');
4474
4534
  const [request, requestParams] = contract ? this.prepareRequest(market, type, query) : this.spotOrderPrepareRequest(market, stop, query);
4475
4535
  request['order_id'] = orderId;
4476
- const methodMiddle = stop ? 'PriceOrders' : 'Orders';
4477
- const method = this.getSupportedMapping(type, {
4478
- 'spot': 'privateSpotGet' + methodMiddle + 'OrderId',
4479
- 'margin': 'privateSpotGet' + methodMiddle + 'OrderId',
4480
- 'swap': 'privateFuturesGetSettle' + methodMiddle + 'OrderId',
4481
- 'future': 'privateDeliveryGetSettle' + methodMiddle + 'OrderId',
4482
- 'option': 'privateOptionsGetOrdersOrderId',
4483
- });
4484
- const response = await this[method](this.extend(request, requestParams));
4536
+ let response = undefined;
4537
+ if (type === 'spot' || type === 'margin') {
4538
+ if (stop) {
4539
+ response = await this.privateSpotGetPriceOrdersOrderId(this.extend(request, requestParams));
4540
+ }
4541
+ else {
4542
+ response = await this.privateSpotGetOrdersOrderId(this.extend(request, requestParams));
4543
+ }
4544
+ }
4545
+ else if (type === 'swap') {
4546
+ if (stop) {
4547
+ response = await this.privateFuturesGetSettlePriceOrdersOrderId(this.extend(request, requestParams));
4548
+ }
4549
+ else {
4550
+ response = await this.privateFuturesGetSettleOrdersOrderId(this.extend(request, requestParams));
4551
+ }
4552
+ }
4553
+ else if (type === 'future') {
4554
+ if (stop) {
4555
+ response = await this.privateDeliveryGetSettlePriceOrdersOrderId(this.extend(request, requestParams));
4556
+ }
4557
+ else {
4558
+ response = await this.privateDeliveryGetSettleOrdersOrderId(this.extend(request, requestParams));
4559
+ }
4560
+ }
4561
+ else if (type === 'option') {
4562
+ response = await this.privateOptionsGetOrdersOrderId(this.extend(request, requestParams));
4563
+ }
4564
+ else {
4565
+ throw new NotSupported(this.id + ' fetchOrder() not support this market type');
4566
+ }
4485
4567
  return this.parseOrder(response, market);
4486
4568
  }
4487
4569
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -4546,19 +4628,41 @@ export default class gate extends Exchange {
4546
4628
  if (since !== undefined && spot) {
4547
4629
  request['from'] = this.parseToInt(since / 1000);
4548
4630
  }
4549
- let methodTail = stop ? 'PriceOrders' : 'Orders';
4550
4631
  const openSpotOrders = spot && (status === 'open') && !stop;
4551
- if (openSpotOrders) {
4552
- methodTail = 'OpenOrders';
4553
- }
4554
- const method = this.getSupportedMapping(type, {
4555
- 'spot': 'privateSpotGet' + methodTail,
4556
- 'margin': 'privateSpotGet' + methodTail,
4557
- 'swap': 'privateFuturesGetSettle' + methodTail,
4558
- 'future': 'privateDeliveryGetSettle' + methodTail,
4559
- 'option': 'privateOptionsGetOrders',
4560
- });
4561
- const response = await this[method](this.extend(request, requestParams));
4632
+ let response = undefined;
4633
+ if (type === 'spot' || type === 'margin') {
4634
+ if (openSpotOrders) {
4635
+ response = await this.privateSpotGetOpenOrders(this.extend(request, requestParams));
4636
+ }
4637
+ else if (stop) {
4638
+ response = await this.privateSpotGetPriceOrders(this.extend(request, requestParams));
4639
+ }
4640
+ else {
4641
+ response = await this.privateSpotGetOrders(this.extend(request, requestParams));
4642
+ }
4643
+ }
4644
+ else if (type === 'swap') {
4645
+ if (stop) {
4646
+ response = await this.privateFuturesGetSettlePriceOrders(this.extend(request, requestParams));
4647
+ }
4648
+ else {
4649
+ response = await this.privateFuturesGetSettleOrders(this.extend(request, requestParams));
4650
+ }
4651
+ }
4652
+ else if (type === 'future') {
4653
+ if (stop) {
4654
+ response = await this.privateDeliveryGetSettlePriceOrders(this.extend(request, requestParams));
4655
+ }
4656
+ else {
4657
+ response = await this.privateDeliveryGetSettleOrders(this.extend(request, requestParams));
4658
+ }
4659
+ }
4660
+ else if (type === 'option') {
4661
+ response = await this.privateOptionsGetOrders(this.extend(request, requestParams));
4662
+ }
4663
+ else {
4664
+ throw new NotSupported(this.id + ' fetchOrders() not support this market type');
4665
+ }
4562
4666
  //
4563
4667
  // spot open orders
4564
4668
  //
@@ -4738,15 +4842,37 @@ export default class gate extends Exchange {
4738
4842
  const [type, query] = this.handleMarketTypeAndParams('cancelOrder', market, params);
4739
4843
  const [request, requestParams] = (type === 'spot' || type === 'margin') ? this.spotOrderPrepareRequest(market, stop, query) : this.prepareRequest(market, type, query);
4740
4844
  request['order_id'] = id;
4741
- const pathMiddle = stop ? 'Price' : '';
4742
- const method = this.getSupportedMapping(type, {
4743
- 'spot': 'privateSpotDelete' + pathMiddle + 'OrdersOrderId',
4744
- 'margin': 'privateSpotDelete' + pathMiddle + 'OrdersOrderId',
4745
- 'swap': 'privateFuturesDeleteSettle' + pathMiddle + 'OrdersOrderId',
4746
- 'future': 'privateDeliveryDeleteSettle' + pathMiddle + 'OrdersOrderId',
4747
- 'option': 'privateOptionsDeleteOrdersOrderId',
4748
- });
4749
- const response = await this[method](this.extend(request, requestParams));
4845
+ let response = undefined;
4846
+ if (type === 'spot' || type === 'margin') {
4847
+ if (stop) {
4848
+ response = await this.privateSpotDeletePriceOrdersOrderId(this.extend(request, requestParams));
4849
+ }
4850
+ else {
4851
+ response = await this.privateSpotDeleteOrdersOrderId(this.extend(request, requestParams));
4852
+ }
4853
+ }
4854
+ else if (type === 'swap') {
4855
+ if (stop) {
4856
+ response = await this.privateFuturesDeleteSettlePriceOrdersOrderId(this.extend(request, requestParams));
4857
+ }
4858
+ else {
4859
+ response = await this.privateFuturesDeleteSettleOrdersOrderId(this.extend(request, requestParams));
4860
+ }
4861
+ }
4862
+ else if (type === 'future') {
4863
+ if (stop) {
4864
+ response = await this.privateDeliveryDeleteSettlePriceOrdersOrderId(this.extend(request, requestParams));
4865
+ }
4866
+ else {
4867
+ response = await this.privateDeliveryDeleteSettleOrdersOrderId(this.extend(request, requestParams));
4868
+ }
4869
+ }
4870
+ else if (type === 'option') {
4871
+ response = await this.privateOptionsDeleteOrdersOrderId(this.extend(request, requestParams));
4872
+ }
4873
+ else {
4874
+ throw new NotSupported(this.id + ' cancelOrder() not support this market type');
4875
+ }
4750
4876
  //
4751
4877
  // spot
4752
4878
  //
@@ -4849,15 +4975,37 @@ export default class gate extends Exchange {
4849
4975
  params = this.omit(params, 'stop');
4850
4976
  const [type, query] = this.handleMarketTypeAndParams('cancelAllOrders', market, params);
4851
4977
  const [request, requestParams] = (type === 'spot') ? this.multiOrderSpotPrepareRequest(market, stop, query) : this.prepareRequest(market, type, query);
4852
- const methodTail = stop ? 'PriceOrders' : 'Orders';
4853
- const method = this.getSupportedMapping(type, {
4854
- 'spot': 'privateSpotDelete' + methodTail,
4855
- 'margin': 'privateSpotDelete' + methodTail,
4856
- 'swap': 'privateFuturesDeleteSettle' + methodTail,
4857
- 'future': 'privateDeliveryDeleteSettle' + methodTail,
4858
- 'option': 'privateOptionsDeleteOrders',
4859
- });
4860
- const response = await this[method](this.extend(request, requestParams));
4978
+ let response = undefined;
4979
+ if (type === 'spot' || type === 'margin') {
4980
+ if (stop) {
4981
+ response = await this.privateSpotDeletePriceOrders(this.extend(request, requestParams));
4982
+ }
4983
+ else {
4984
+ response = await this.privateSpotDeleteOrders(this.extend(request, requestParams));
4985
+ }
4986
+ }
4987
+ else if (type === 'swap') {
4988
+ if (stop) {
4989
+ response = await this.privateFuturesDeleteSettlePriceOrders(this.extend(request, requestParams));
4990
+ }
4991
+ else {
4992
+ response = await this.privateFuturesDeleteSettleOrders(this.extend(request, requestParams));
4993
+ }
4994
+ }
4995
+ else if (type === 'future') {
4996
+ if (stop) {
4997
+ response = await this.privateDeliveryDeleteSettlePriceOrders(this.extend(request, requestParams));
4998
+ }
4999
+ else {
5000
+ response = await this.privateDeliveryDeleteSettleOrders(this.extend(request, requestParams));
5001
+ }
5002
+ }
5003
+ else if (type === 'option') {
5004
+ response = await this.privateOptionsDeleteOrders(this.extend(request, requestParams));
5005
+ }
5006
+ else {
5007
+ throw new NotSupported(this.id + ' cancelAllOrders() not support this market type');
5008
+ }
4861
5009
  //
4862
5010
  // [
4863
5011
  // {
@@ -4987,10 +5135,6 @@ export default class gate extends Exchange {
4987
5135
  }
4988
5136
  await this.loadMarkets();
4989
5137
  const market = this.market(symbol);
4990
- const method = this.getSupportedMapping(market['type'], {
4991
- 'swap': 'privateFuturesPostSettlePositionsContractLeverage',
4992
- 'future': 'privateDeliveryPostSettlePositionsContractLeverage',
4993
- });
4994
5138
  const [request, query] = this.prepareRequest(market, undefined, params);
4995
5139
  const defaultMarginMode = this.safeString2(this.options, 'marginMode', 'defaultMarginMode');
4996
5140
  const crossLeverageLimit = this.safeString(query, 'cross_leverage_limit');
@@ -5006,7 +5150,16 @@ export default class gate extends Exchange {
5006
5150
  else {
5007
5151
  request['leverage'] = leverage.toString();
5008
5152
  }
5009
- const response = await this[method](this.extend(request, query));
5153
+ let response = undefined;
5154
+ if (market['swap']) {
5155
+ response = await this.privateFuturesPostSettlePositionsContractLeverage(this.extend(request, query));
5156
+ }
5157
+ else if (market['future']) {
5158
+ response = await this.privateDeliveryPostSettlePositionsContractLeverage(this.extend(request, query));
5159
+ }
5160
+ else {
5161
+ throw new NotSupported(this.id + ' setLeverage() not support this market type');
5162
+ }
5010
5163
  //
5011
5164
  // {
5012
5165
  // "value": "0",
@@ -5167,10 +5320,10 @@ export default class gate extends Exchange {
5167
5320
  [request, params] = this.prepareRequest(market, market['type'], params);
5168
5321
  const extendedRequest = this.extend(request, params);
5169
5322
  let response = undefined;
5170
- if (market['type'] === 'swap') {
5323
+ if (market['swap']) {
5171
5324
  response = await this.privateFuturesGetSettlePositionsContract(extendedRequest);
5172
5325
  }
5173
- else if (market['type'] === 'future') {
5326
+ else if (market['future']) {
5174
5327
  response = await this.privateDeliveryGetSettlePositionsContract(extendedRequest);
5175
5328
  }
5176
5329
  else if (market['type'] === 'option') {
@@ -5350,11 +5503,16 @@ export default class gate extends Exchange {
5350
5503
  if (type !== 'future' && type !== 'swap') {
5351
5504
  throw new BadRequest(this.id + ' fetchLeverageTiers only supports swap and future');
5352
5505
  }
5353
- const method = this.getSupportedMapping(type, {
5354
- 'swap': 'publicFuturesGetSettleContracts',
5355
- 'future': 'publicDeliveryGetSettleContracts',
5356
- });
5357
- const response = await this[method](this.extend(request, requestParams));
5506
+ let response = undefined;
5507
+ if (type === 'swap') {
5508
+ response = await this.publicFuturesGetSettleContracts(this.extend(request, requestParams));
5509
+ }
5510
+ else if (type === 'future') {
5511
+ response = await this.publicDeliveryGetSettleContracts(this.extend(request, requestParams));
5512
+ }
5513
+ else {
5514
+ throw new NotSupported(this.id + ' fetchLeverageTiers() not support this market type');
5515
+ }
5358
5516
  //
5359
5517
  // Perpetual swap
5360
5518
  //
@@ -5860,11 +6018,16 @@ export default class gate extends Exchange {
5860
6018
  const market = this.market(symbol);
5861
6019
  const [request, query] = this.prepareRequest(market, undefined, params);
5862
6020
  request['change'] = this.numberToString(amount);
5863
- const method = this.getSupportedMapping(market['type'], {
5864
- 'swap': 'privateFuturesPostSettlePositionsContractMargin',
5865
- 'future': 'privateDeliveryPostSettlePositionsContractMargin',
5866
- });
5867
- const response = await this[method](this.extend(request, query));
6021
+ let response = undefined;
6022
+ if (market['swap']) {
6023
+ response = await this.privateFuturesPostSettlePositionsContractMargin(this.extend(request, query));
6024
+ }
6025
+ else if (market['future']) {
6026
+ response = await this.privateDeliveryPostSettlePositionsContractMargin(this.extend(request, query));
6027
+ }
6028
+ else {
6029
+ throw new NotSupported(this.id + ' modifyMarginHelper() not support this market type');
6030
+ }
5868
6031
  return this.parseMarginModification(response, market);
5869
6032
  }
5870
6033
  parseMarginModification(data, market = undefined) {
@@ -53,8 +53,8 @@ export default class binance extends binanceRest {
53
53
  },
54
54
  'api': {
55
55
  'ws': {
56
- 'spot': 'wss://stream.binance.com:9443/ws',
57
- 'margin': 'wss://stream.binance.com:9443/ws',
56
+ 'spot': 'wss://stream.binance.com/ws',
57
+ 'margin': 'wss://stream.binance.com/ws',
58
58
  'future': 'wss://fstream.binance.com/ws',
59
59
  'delivery': 'wss://dstream.binance.com/ws',
60
60
  'ws': 'wss://ws-api.binance.com:443/ws-api/v3',
@@ -1309,20 +1309,23 @@ export default class binance extends binanceRest {
1309
1309
  return;
1310
1310
  }
1311
1311
  let method = 'publicPutUserDataStream';
1312
+ const request = {};
1313
+ const symbol = this.safeString(params, 'symbol');
1314
+ const sendParams = this.omit(params, ['type', 'symbol']);
1312
1315
  if (type === 'future') {
1313
1316
  method = 'fapiPrivatePutListenKey';
1314
1317
  }
1315
1318
  else if (type === 'delivery') {
1316
1319
  method = 'dapiPrivatePutListenKey';
1317
1320
  }
1318
- else if (type === 'margin') {
1319
- method = 'sapiPutUserDataStream';
1321
+ else {
1322
+ request['listenKey'] = listenKey;
1323
+ if (type === 'margin') {
1324
+ request['symbol'] = symbol;
1325
+ method = 'sapiPutUserDataStream';
1326
+ }
1320
1327
  }
1321
- const request = {
1322
- 'listenKey': listenKey,
1323
- };
1324
1328
  const time = this.milliseconds();
1325
- const sendParams = this.omit(params, 'type');
1326
1329
  try {
1327
1330
  await this[method](this.extend(request, sendParams));
1328
1331
  }
@@ -2076,9 +2079,7 @@ export default class binance extends binanceRest {
2076
2079
  market = this.market(symbol);
2077
2080
  symbol = market['symbol'];
2078
2081
  messageHash += ':' + symbol;
2079
- params = this.extend(params, { 'type': market['type'], 'symbol': symbol }); // needed inside authenticate for isolated margin
2080
2082
  }
2081
- await this.authenticate(params);
2082
2083
  let type = undefined;
2083
2084
  [type, params] = this.handleMarketTypeAndParams('watchOrders', market, params);
2084
2085
  let subType = undefined;
@@ -2089,6 +2090,8 @@ export default class binance extends binanceRest {
2089
2090
  else if (this.isInverse(type, subType)) {
2090
2091
  type = 'delivery';
2091
2092
  }
2093
+ params = this.extend(params, { 'type': type, 'symbol': symbol }); // needed inside authenticate for isolated margin
2094
+ await this.authenticate(params);
2092
2095
  let urlType = type;
2093
2096
  if (type === 'margin') {
2094
2097
  urlType = 'spot'; // spot-margin shares the same stream as regular spot
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.1.69",
3
+ "version": "4.1.71",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",