@bitpay-labs/bitcore-wallet-service 11.11.0 → 11.11.1

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.
Files changed (107) hide show
  1. package/package.json +4 -4
  2. package/src/config.ts +0 -20
  3. package/src/externalservices/banxa.ts +51 -10
  4. package/src/externalservices/changelly.ts +54 -6
  5. package/src/externalservices/moonpay.ts +85 -19
  6. package/src/externalservices/oneInch.ts +13 -5
  7. package/src/externalservices/ramp.ts +42 -8
  8. package/src/externalservices/sardine.ts +51 -10
  9. package/src/externalservices/simplex.ts +58 -11
  10. package/src/externalservices/thorswap.ts +46 -11
  11. package/src/externalservices/transak.ts +53 -11
  12. package/src/lib/routes/services.ts +0 -12
  13. package/src/lib/server.ts +0 -3
  14. package/src/types/externalservices.d.ts +0 -1
  15. package/test/integration/externalservices/banxa.test.ts +95 -5
  16. package/test/integration/externalservices/changelly.test.ts +118 -6
  17. package/test/integration/externalservices/coinGecko.test.ts +4 -0
  18. package/test/integration/externalservices/moonpay.test.ts +178 -9
  19. package/test/integration/externalservices/oneInch.test.ts +28 -1
  20. package/test/integration/externalservices/ramp.test.ts +126 -4
  21. package/test/integration/externalservices/sardine.test.ts +95 -5
  22. package/test/integration/externalservices/simplex.test.ts +95 -5
  23. package/test/integration/externalservices/thorswap.test.ts +81 -5
  24. package/test/integration/externalservices/transak.test.ts +98 -6
  25. package/test/integration/helpers.ts +1 -1
  26. package/test/integration/server.test.ts +56 -88
  27. package/ts_build/package.json +3 -3
  28. package/ts_build/src/config.d.ts.map +1 -1
  29. package/ts_build/src/config.js +0 -4
  30. package/ts_build/src/config.js.map +1 -1
  31. package/ts_build/src/externalservices/banxa.d.ts.map +1 -1
  32. package/ts_build/src/externalservices/banxa.js +51 -10
  33. package/ts_build/src/externalservices/banxa.js.map +1 -1
  34. package/ts_build/src/externalservices/changelly.d.ts.map +1 -1
  35. package/ts_build/src/externalservices/changelly.js +54 -6
  36. package/ts_build/src/externalservices/changelly.js.map +1 -1
  37. package/ts_build/src/externalservices/moonpay.d.ts.map +1 -1
  38. package/ts_build/src/externalservices/moonpay.js +85 -19
  39. package/ts_build/src/externalservices/moonpay.js.map +1 -1
  40. package/ts_build/src/externalservices/oneInch.d.ts.map +1 -1
  41. package/ts_build/src/externalservices/oneInch.js +13 -5
  42. package/ts_build/src/externalservices/oneInch.js.map +1 -1
  43. package/ts_build/src/externalservices/ramp.d.ts.map +1 -1
  44. package/ts_build/src/externalservices/ramp.js +42 -8
  45. package/ts_build/src/externalservices/ramp.js.map +1 -1
  46. package/ts_build/src/externalservices/sardine.d.ts.map +1 -1
  47. package/ts_build/src/externalservices/sardine.js +51 -10
  48. package/ts_build/src/externalservices/sardine.js.map +1 -1
  49. package/ts_build/src/externalservices/simplex.d.ts.map +1 -1
  50. package/ts_build/src/externalservices/simplex.js +55 -11
  51. package/ts_build/src/externalservices/simplex.js.map +1 -1
  52. package/ts_build/src/externalservices/thorswap.d.ts.map +1 -1
  53. package/ts_build/src/externalservices/thorswap.js +45 -11
  54. package/ts_build/src/externalservices/thorswap.js.map +1 -1
  55. package/ts_build/src/externalservices/transak.d.ts.map +1 -1
  56. package/ts_build/src/externalservices/transak.js +53 -11
  57. package/ts_build/src/externalservices/transak.js.map +1 -1
  58. package/ts_build/src/lib/routes/services.d.ts.map +1 -1
  59. package/ts_build/src/lib/routes/services.js +0 -10
  60. package/ts_build/src/lib/routes/services.js.map +1 -1
  61. package/ts_build/src/lib/server.d.ts +0 -2
  62. package/ts_build/src/lib/server.d.ts.map +1 -1
  63. package/ts_build/src/lib/server.js +0 -2
  64. package/ts_build/src/lib/server.js.map +1 -1
  65. package/ts_build/test/integration/externalservices/banxa.test.d.ts.map +1 -1
  66. package/ts_build/test/integration/externalservices/banxa.test.js +93 -5
  67. package/ts_build/test/integration/externalservices/banxa.test.js.map +1 -1
  68. package/ts_build/test/integration/externalservices/changelly.test.d.ts.map +1 -1
  69. package/ts_build/test/integration/externalservices/changelly.test.js +111 -6
  70. package/ts_build/test/integration/externalservices/changelly.test.js.map +1 -1
  71. package/ts_build/test/integration/externalservices/coinGecko.test.js +4 -0
  72. package/ts_build/test/integration/externalservices/coinGecko.test.js.map +1 -1
  73. package/ts_build/test/integration/externalservices/moonpay.test.d.ts.map +1 -1
  74. package/ts_build/test/integration/externalservices/moonpay.test.js +169 -9
  75. package/ts_build/test/integration/externalservices/moonpay.test.js.map +1 -1
  76. package/ts_build/test/integration/externalservices/oneInch.test.d.ts.map +1 -1
  77. package/ts_build/test/integration/externalservices/oneInch.test.js +26 -1
  78. package/ts_build/test/integration/externalservices/oneInch.test.js.map +1 -1
  79. package/ts_build/test/integration/externalservices/ramp.test.d.ts.map +1 -1
  80. package/ts_build/test/integration/externalservices/ramp.test.js +115 -4
  81. package/ts_build/test/integration/externalservices/ramp.test.js.map +1 -1
  82. package/ts_build/test/integration/externalservices/sardine.test.d.ts.map +1 -1
  83. package/ts_build/test/integration/externalservices/sardine.test.js +94 -5
  84. package/ts_build/test/integration/externalservices/sardine.test.js.map +1 -1
  85. package/ts_build/test/integration/externalservices/simplex.test.d.ts.map +1 -1
  86. package/ts_build/test/integration/externalservices/simplex.test.js +89 -5
  87. package/ts_build/test/integration/externalservices/simplex.test.js.map +1 -1
  88. package/ts_build/test/integration/externalservices/thorswap.test.d.ts.map +1 -1
  89. package/ts_build/test/integration/externalservices/thorswap.test.js +76 -5
  90. package/ts_build/test/integration/externalservices/thorswap.test.js.map +1 -1
  91. package/ts_build/test/integration/externalservices/transak.test.d.ts.map +1 -1
  92. package/ts_build/test/integration/externalservices/transak.test.js +93 -6
  93. package/ts_build/test/integration/externalservices/transak.test.js.map +1 -1
  94. package/ts_build/test/integration/helpers.js +1 -1
  95. package/ts_build/test/integration/helpers.js.map +1 -1
  96. package/ts_build/test/integration/server.test.js +44 -76
  97. package/ts_build/test/integration/server.test.js.map +1 -1
  98. package/src/externalservices/wyre.ts +0 -131
  99. package/test/integration/externalservices/wyre.test.ts +0 -270
  100. package/ts_build/src/externalservices/wyre.d.ts +0 -7
  101. package/ts_build/src/externalservices/wyre.d.ts.map +0 -1
  102. package/ts_build/src/externalservices/wyre.js +0 -144
  103. package/ts_build/src/externalservices/wyre.js.map +0 -1
  104. package/ts_build/test/integration/externalservices/wyre.test.d.ts +0 -2
  105. package/ts_build/test/integration/externalservices/wyre.test.d.ts.map +0 -1
  106. package/ts_build/test/integration/externalservices/wyre.test.js +0 -281
  107. package/ts_build/test/integration/externalservices/wyre.test.js.map +0 -1
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@bitpay-labs/bitcore-wallet-service",
3
3
  "description": "A service for Mutisig HD Bitcoin Wallets",
4
4
  "author": "BitPay Inc",
5
- "version": "11.11.0",
5
+ "version": "11.11.1",
6
6
  "license": "MIT",
7
7
  "main": "ts_build/src/index.js",
8
8
  "types": "./ts_build/src/index.d.ts",
@@ -42,8 +42,8 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@bitpay-labs/bitcore-logging": "^11.10.9",
45
- "@bitpay-labs/bitcore-tss": "^11.11.0",
46
- "@bitpay-labs/crypto-wallet-core": "^11.11.0",
45
+ "@bitpay-labs/bitcore-tss": "^11.11.1",
46
+ "@bitpay-labs/crypto-wallet-core": "^11.11.1",
47
47
  "@sendgrid/mail": "6.5.4",
48
48
  "abi-decoder": "2.4.0",
49
49
  "async": "0.9.2",
@@ -107,5 +107,5 @@
107
107
  "email": "kjoseph@bitpay.com"
108
108
  }
109
109
  ],
110
- "gitHead": "df3d9a76fd7418767d2951fbbfce5a0c7c1db215"
110
+ "gitHead": "2d26cb6cfc59aab5415c9ce32863a9b9d832e5bb"
111
111
  }
package/src/config.ts CHANGED
@@ -229,10 +229,6 @@ const Config = (): any => {
229
229
  transak: {
230
230
  disabled: false,
231
231
  removed: false
232
- },
233
- wyre: {
234
- disabled: false,
235
- removed: false
236
232
  }
237
233
  },
238
234
  sellCrypto: {
@@ -441,22 +437,6 @@ const Config = (): any => {
441
437
  // },
442
438
  // whitelist: []
443
439
  // },
444
- // wyre: {
445
- // sandbox: {
446
- // apiKey: 'wyre_sandbox_api_key_here',
447
- // secretApiKey: 'wyre_sandbox_secret_api_key_here',
448
- // api: 'https://api.testwyre.com',
449
- // widgetUrl: 'https://pay.testwyre.com',
450
- // appProviderAccountId: 'wyre_provider_sandbox_account_id_here'
451
- // },
452
- // production: {
453
- // apiKey: 'wyre_production_api_key_here',
454
- // secretApiKey: 'wyre_production_secret_api_key_here',
455
- // api: 'https://api.sendwyre.com',
456
- // widgetUrl: 'https://pay.sendwyre.com/',
457
- // appProviderAccountId: 'wyre_provider_production_account_id_here'
458
- // }
459
- // },
460
440
  // changelly: {
461
441
  // v1: {
462
442
  // apiKey: 'changelly_api_key',
@@ -3,6 +3,7 @@ import * as _ from 'lodash';
3
3
  import * as request from 'request';
4
4
  import config from '../config';
5
5
  import { ClientError } from '../lib/errors/clienterror';
6
+ import logger from '../lib/logger';
6
7
  import { checkRequired } from '../lib/server';
7
8
 
8
9
  export class BanxaService {
@@ -86,9 +87,17 @@ export class BanxaService {
86
87
  },
87
88
  (err, data) => {
88
89
  if (err) {
89
- return reject(err.body ? err.body : err);
90
+ logger.error(`Banxa request failed with error (${URL}): ${err.stack || err}`);
91
+ return reject(new ClientError('Failed to fetch Banxa coins'));
90
92
  } else {
91
- return resolve(data.body ? data.body : data);
93
+ const success = data.statusCode >= 200 && data.statusCode < 300;
94
+ if (!success) {
95
+ logger.warn(`Banxa request failed with status code ${data.statusCode}: ${URL}`);
96
+ }
97
+ if (!data.body) {
98
+ return reject(new ClientError('Banxa did not return coins'));
99
+ }
100
+ return resolve(data.body);
92
101
  }
93
102
  }
94
103
  );
@@ -123,9 +132,17 @@ export class BanxaService {
123
132
  },
124
133
  (err, data) => {
125
134
  if (err) {
126
- return reject(err.body ? err.body : err);
135
+ logger.error(`Banxa request failed with error (${URL}): ${err.stack || err}`);
136
+ return reject(new ClientError('Failed to fetch Banxa payment methods'));
127
137
  } else {
128
- return resolve(data.body ? data.body : data);
138
+ const success = data.statusCode >= 200 && data.statusCode < 300;
139
+ if (!success) {
140
+ logger.warn(`Banxa request failed with status code ${data.statusCode}: ${URL}`);
141
+ }
142
+ if (!data.body) {
143
+ return reject(new ClientError('Banxa did not return payment methods'));
144
+ }
145
+ return resolve(data.body);
129
146
  }
130
147
  }
131
148
  );
@@ -170,9 +187,17 @@ export class BanxaService {
170
187
  },
171
188
  (err, data) => {
172
189
  if (err) {
173
- return reject(err.body ? err.body : err);
190
+ logger.error(`Banxa request failed with error (${URL}): ${err.stack || err}`);
191
+ return reject(new ClientError('Failed to fetch Banxa quote'));
174
192
  } else {
175
- return resolve(data.body ? data.body : data);
193
+ const success = data.statusCode >= 200 && data.statusCode < 300;
194
+ if (!success) {
195
+ logger.warn(`Banxa request failed with status code ${data.statusCode}: ${URL}`);
196
+ }
197
+ if (!data.body) {
198
+ return reject(new ClientError('Banxa did not return quote'));
199
+ }
200
+ return resolve(data.body);
176
201
  }
177
202
  }
178
203
  );
@@ -214,9 +239,17 @@ export class BanxaService {
214
239
  },
215
240
  (err, data) => {
216
241
  if (err) {
217
- return reject(err.body ? err.body : err);
242
+ logger.error(`Banxa request failed with error (${URL}): ${err.stack || err}`);
243
+ return reject(new ClientError('Failed to create Banxa order'));
218
244
  } else {
219
- return resolve(data.body ? data.body : data);
245
+ const success = data.statusCode >= 200 && data.statusCode < 300;
246
+ if (!success) {
247
+ logger.warn(`Banxa request failed with status code ${data.statusCode}: ${URL}`);
248
+ }
249
+ if (!data.body) {
250
+ return reject(new ClientError('Banxa did not return order'));
251
+ }
252
+ return resolve(data.body);
220
253
  }
221
254
  }
222
255
  );
@@ -254,9 +287,17 @@ export class BanxaService {
254
287
  },
255
288
  (err, data) => {
256
289
  if (err) {
257
- return reject(err.body ? err.body : err);
290
+ logger.error(`Banxa request failed with error (${URL}): ${err.stack || err}`);
291
+ return reject(new ClientError('Failed to get Banxa order'));
258
292
  } else {
259
- return resolve(data.body ? data.body : data);
293
+ const success = data.statusCode >= 200 && data.statusCode < 300;
294
+ if (!success) {
295
+ logger.warn(`Banxa request failed with status code ${data.statusCode}: ${URL}`);
296
+ }
297
+ if (!data.body) {
298
+ return reject(new ClientError('Banxa did not return order'));
299
+ }
300
+ return resolve(data.body);
260
301
  }
261
302
  }
262
303
  );
@@ -96,8 +96,16 @@ export class ChangellyService {
96
96
  },
97
97
  (err, data) => {
98
98
  if (err) {
99
- return reject(err.body ?? err);
99
+ logger.error(`Changelly request failed with error (${URL}): ${err.stack || err}`);
100
+ return reject(new ClientError('Failed to fetch Changelly currencies'));
100
101
  } else {
102
+ const success = data.statusCode >= 200 && data.statusCode < 300;
103
+ if (!success) {
104
+ logger.warn(`Changelly request failed with status code ${data.statusCode}: ${URL}`);
105
+ }
106
+ if (!data.body) {
107
+ return reject(new ClientError('Changelly did not return currencies'));
108
+ }
101
109
  return resolve(data.body);
102
110
  }
103
111
  }
@@ -147,8 +155,16 @@ export class ChangellyService {
147
155
  },
148
156
  (err, data) => {
149
157
  if (err) {
150
- return reject(err.body ?? err);
158
+ logger.error(`Changelly request failed with error (${URL}): ${err.stack || err}`);
159
+ return reject(new ClientError('Failed to fetch Changelly pairs params'));
151
160
  } else {
161
+ const success = data.statusCode >= 200 && data.statusCode < 300;
162
+ if (!success) {
163
+ logger.warn(`Changelly request failed with status code ${data.statusCode}: ${URL}`);
164
+ }
165
+ if (!data.body) {
166
+ return reject(new ClientError('Changelly did not return pairs params'));
167
+ }
152
168
  return resolve(data.body);
153
169
  }
154
170
  }
@@ -199,8 +215,16 @@ export class ChangellyService {
199
215
  },
200
216
  (err, data) => {
201
217
  if (err) {
202
- return reject(err.body ?? err);
218
+ logger.error(`Changelly request failed with error (${URL}): ${err.stack || err}`);
219
+ return reject(new ClientError('Failed to fetch Changelly fix rate for amount'));
203
220
  } else {
221
+ const success = data.statusCode >= 200 && data.statusCode < 300;
222
+ if (!success) {
223
+ logger.warn(`Changelly request failed with status code ${data.statusCode}: ${URL}`);
224
+ }
225
+ if (!data.body) {
226
+ return reject(new ClientError('Changelly did not return fix rate for amount'));
227
+ }
204
228
  return resolve(data.body);
205
229
  }
206
230
  }
@@ -262,8 +286,16 @@ export class ChangellyService {
262
286
  },
263
287
  (err, data) => {
264
288
  if (err) {
265
- return reject(err.body ?? err);
289
+ logger.error(`Changelly request failed with error (${URL}): ${err.stack || err}`);
290
+ return reject(new ClientError('Failed to create Changelly fix transaction'));
266
291
  } else {
292
+ const success = data.statusCode >= 200 && data.statusCode < 300;
293
+ if (!success) {
294
+ logger.warn(`Changelly request failed with status code ${data.statusCode}: ${URL}`);
295
+ }
296
+ if (!data.body) {
297
+ return reject(new ClientError('Changelly did not return fix transaction'));
298
+ }
267
299
  return resolve(data.body);
268
300
  }
269
301
  }
@@ -312,8 +344,16 @@ export class ChangellyService {
312
344
  },
313
345
  (err, data) => {
314
346
  if (err) {
315
- return reject(err.body ?? err);
347
+ logger.error(`Changelly request failed with error (${URL}): ${err.stack || err}`);
348
+ return reject(new ClientError('Failed to get Changelly transactions'));
316
349
  } else {
350
+ const success = data.statusCode >= 200 && data.statusCode < 300;
351
+ if (!success) {
352
+ logger.warn(`Changelly request failed with status code ${data.statusCode}: ${URL}`);
353
+ }
354
+ if (!data.body) {
355
+ return reject(new ClientError('Changelly did not return transactions'));
356
+ }
317
357
  return resolve(data.body);
318
358
  }
319
359
  }
@@ -360,8 +400,16 @@ export class ChangellyService {
360
400
  },
361
401
  (err, data) => {
362
402
  if (err) {
363
- return reject(err.body ?? err);
403
+ logger.error(`Changelly request failed with error (${URL}): ${err.stack || err}`);
404
+ return reject(new ClientError('Failed to get Changelly status'));
364
405
  } else {
406
+ const success = data.statusCode >= 200 && data.statusCode < 300;
407
+ if (!success) {
408
+ logger.warn(`Changelly request failed with status code ${data.statusCode}: ${URL}`);
409
+ }
410
+ if (!data.body) {
411
+ return reject(new ClientError('Changelly did not return status'));
412
+ }
365
413
  return resolve(data.body);
366
414
  }
367
415
  }
@@ -3,6 +3,7 @@ import * as request from 'request';
3
3
  import config from '../config';
4
4
  import { Utils } from '../lib/common/utils';
5
5
  import { ClientError } from '../lib/errors/clienterror';
6
+ import logger from '../lib/logger';
6
7
  import { checkRequired } from '../lib/server';
7
8
 
8
9
  export class MoonpayService {
@@ -58,9 +59,17 @@ export class MoonpayService {
58
59
  },
59
60
  (err, data) => {
60
61
  if (err) {
61
- return reject(err.body ? err.body : err);
62
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
63
+ return reject(new ClientError('Failed to get Moonpay currencies'));
62
64
  } else {
63
- return resolve(data.body ? data.body : data);
65
+ const success = data.statusCode >= 200 && data.statusCode < 300;
66
+ if (!success) {
67
+ logger.warn(`Moonpay request failed with status code ${data.statusCode}: ${URL}`);
68
+ }
69
+ if (!data.body) {
70
+ return reject(new ClientError('Moonpay did not return currencies'));
71
+ }
72
+ return resolve(data.body);
64
73
  }
65
74
  }
66
75
  );
@@ -100,9 +109,17 @@ export class MoonpayService {
100
109
  },
101
110
  (err, data) => {
102
111
  if (err) {
103
- return reject(err.body ? err.body : err);
112
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
113
+ return reject(new ClientError('Failed to get Moonpay buy quote'));
104
114
  } else {
105
- return resolve(data.body ? data.body : data);
115
+ const success = data.statusCode >= 200 && data.statusCode < 300;
116
+ if (!success) {
117
+ logger.warn(`Moonpay request failed with status code ${data.statusCode}: ${URL}`);
118
+ }
119
+ if (!data.body) {
120
+ return reject(new ClientError('Moonpay did not return buy quote'));
121
+ }
122
+ return resolve(data.body);
106
123
  }
107
124
  }
108
125
  );
@@ -141,9 +158,17 @@ export class MoonpayService {
141
158
  },
142
159
  (err, data) => {
143
160
  if (err) {
144
- return reject(err.body ? err.body : err);
161
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
162
+ return reject(new ClientError('Failed to get Moonpay sell quote'));
145
163
  } else {
146
- return resolve(data.body ? data.body : data);
164
+ const success = data.statusCode >= 200 && data.statusCode < 300;
165
+ if (!success) {
166
+ logger.warn(`Moonpay request failed with status code ${data.statusCode}: ${URL}`);
167
+ }
168
+ if (!data.body) {
169
+ return reject(new ClientError('Moonpay did not return sell quote'));
170
+ }
171
+ return resolve(data.body);
147
172
  }
148
173
  }
149
174
  );
@@ -180,9 +205,17 @@ export class MoonpayService {
180
205
  },
181
206
  (err, data) => {
182
207
  if (err) {
183
- return reject(err.body ? err.body : err);
208
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
209
+ return reject(new ClientError('Failed to get Moonpay currency limits'));
184
210
  } else {
185
- return resolve(data.body ? data.body : data);
211
+ const success = data.statusCode >= 200 && data.statusCode < 300;
212
+ if (!success) {
213
+ logger.warn(`Moonpay request failed with status code ${data.statusCode}: ${URL}`);
214
+ }
215
+ if (!data.body) {
216
+ return reject(new ClientError('Moonpay did not return currency limits'));
217
+ }
218
+ return resolve(data.body);
186
219
  }
187
220
  }
188
221
  );
@@ -366,9 +399,17 @@ export class MoonpayService {
366
399
  },
367
400
  (err, data) => {
368
401
  if (err) {
369
- return reject(err.body ? err.body : err);
402
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
403
+ return reject(new ClientError('Failed to get Moonpay transaction details'));
370
404
  } else {
371
- return resolve(data.body ? data.body : data);
405
+ const success = data.statusCode >= 200 && data.statusCode < 300;
406
+ if (!success) {
407
+ logger.warn(`Moonpay request failed with status code ${data.statusCode}: ${URL}`);
408
+ }
409
+ if (!data.body) {
410
+ return reject(new ClientError('Moonpay did not return transaction details'));
411
+ }
412
+ return resolve(data.body);
372
413
  }
373
414
  }
374
415
  );
@@ -406,9 +447,17 @@ export class MoonpayService {
406
447
  },
407
448
  (err, data) => {
408
449
  if (err) {
409
- return reject(err.body ? err.body : err);
450
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
451
+ return reject(new ClientError('Failed to get Moonpay sell transaction details'));
410
452
  } else {
411
- return resolve(data.body ? data.body : data);
453
+ const success = data.statusCode >= 200 && data.statusCode < 300;
454
+ if (!success) {
455
+ logger.warn(`Moonpay request failed with status code ${data.statusCode}: ${URL}`);
456
+ }
457
+ if (!data.body) {
458
+ return reject(new ClientError('Moonpay did not return sell transaction details'));
459
+ }
460
+ return resolve(data.body);
412
461
  }
413
462
  }
414
463
  );
@@ -445,10 +494,14 @@ export class MoonpayService {
445
494
  },
446
495
  (err, data) => {
447
496
  if (err) {
448
- return reject(err.body ? err.body : err);
497
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
498
+ return reject(new ClientError('Failed to cancel Moonpay sell transaction'));
449
499
  } else {
450
500
  const success = data.statusCode >= 200 && data.statusCode < 300;
451
- return resolve(data.body ? data.body : { success });
501
+ if (!success) {
502
+ logger.warn(`Moonpay request failed with status code ${data.statusCode}: ${URL}`);
503
+ }
504
+ return resolve(data.body || { success });
452
505
  }
453
506
  }
454
507
  );
@@ -478,9 +531,17 @@ export class MoonpayService {
478
531
  },
479
532
  (err, data) => {
480
533
  if (err) {
481
- return reject(err.body ? err.body : err);
534
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
535
+ return reject(new ClientError('Failed to get Moonpay account details'));
482
536
  } else {
483
- return resolve(data.body ? data.body : data);
537
+ const success = data.statusCode >= 200 && data.statusCode < 300;
538
+ if (!success) {
539
+ logger.warn(`Moonpay request failed with status code ${data.statusCode}: ${URL}`);
540
+ }
541
+ if (!data.body) {
542
+ return reject(new ClientError('Moonpay did not return account details'));
543
+ }
544
+ return resolve(data.body);
484
545
  }
485
546
  }
486
547
  );
@@ -525,7 +586,8 @@ export class MoonpayService {
525
586
  },
526
587
  (err, data) => {
527
588
  if (err) {
528
- return reject(err.body ?? err);
589
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
590
+ return reject(new ClientError('Failed to create Moonpay session'));
529
591
  } else {
530
592
  if (!data.body) {
531
593
  return reject(new ClientError('Moonpay did not return a session'));
@@ -562,10 +624,14 @@ export class MoonpayService {
562
624
  },
563
625
  (err, data) => {
564
626
  if (err) {
565
- return reject(err.body ? err.body : err);
627
+ logger.error(`Moonpay request failed with error (${URL}): ${err.stack || err}`);
628
+ return reject(new ClientError('Failed to revoke Moonpay session'));
566
629
  } else {
567
630
  const success = data.statusCode >= 200 && data.statusCode < 300;
568
- return resolve(data.body ? data.body : { success });
631
+ if (!success) {
632
+ logger.warn(`Moonpay request failed with status code ${data.statusCode}: ${URL}`);
633
+ }
634
+ return resolve(data.body || { success });
569
635
  }
570
636
  }
571
637
  );
@@ -74,7 +74,7 @@ export class OneInchService {
74
74
 
75
75
  const chainNetwork: string = req.params?.['chain']
76
76
  ? `${req.params['chain'].toUpperCase()}_mainnet`
77
- : 'eth_mainnet';
77
+ : 'ETH_mainnet';
78
78
  const chainId: number = ConstantsCWC.EVM_CHAIN_NETWORK_TO_CHAIN_ID[chainNetwork];
79
79
 
80
80
  const URL: string = `${credentials.API}/swap/v5.2/${chainId}/swap/?${qs.join('&')}`;
@@ -87,8 +87,16 @@ export class OneInchService {
87
87
  },
88
88
  (err, data) => {
89
89
  if (err) {
90
- return reject(err.body ?? err);
90
+ logger.error(`1Inch request failed with error (${URL}): ${err.stack || err}`);
91
+ return reject(new ClientError('Failed to get 1Inch swap data'));
91
92
  } else {
93
+ const success = data.statusCode >= 200 && data.statusCode < 300;
94
+ if (!success) {
95
+ logger.warn(`1Inch request failed with status code ${data.statusCode}: ${URL}`);
96
+ }
97
+ if (!data.body) {
98
+ return reject(new ClientError('1Inch did not return swap data'));
99
+ }
92
100
  return resolve(data.body);
93
101
  }
94
102
  }
@@ -137,12 +145,12 @@ export class OneInchService {
137
145
  (err, data) => {
138
146
  const tokens = data?.body?.tokens;
139
147
  if (err) {
140
- logger.warn('An error occured while retrieving the token list', err);
148
+ logger.error('An error occured while retrieving 1Inch token list: %o', err);
141
149
  if (oldvalues) {
142
150
  logger.warn('Using old cached values');
143
151
  return resolve(oldvalues);
144
152
  }
145
- return reject(err.body ?? err);
153
+ return reject(new ClientError('Failed to get 1Inch token list'));
146
154
  } else if (data?.statusCode === 429 && oldvalues) {
147
155
  // oneinch rate limit
148
156
  return resolve(oldvalues);
@@ -152,7 +160,7 @@ export class OneInchService {
152
160
  logger.warn('No token list available... using old cached values');
153
161
  return resolve(oldvalues);
154
162
  }
155
- return reject(new Error('Could not get tokens list'));
163
+ return reject(new Error('Could not get 1Inch tokens list'));
156
164
  }
157
165
  this.storage.storeGlobalCache(cacheKey, tokens, err => {
158
166
  if (err) {
@@ -3,6 +3,7 @@ import * as request from 'request';
3
3
  import config from '../config';
4
4
  import { Utils } from '../lib/common/utils';
5
5
  import { ClientError } from '../lib/errors/clienterror';
6
+ import logger from '../lib/logger';
6
7
  import { checkRequired } from '../lib/server';
7
8
 
8
9
  export class RampService {
@@ -59,9 +60,17 @@ export class RampService {
59
60
  },
60
61
  (err, data) => {
61
62
  if (err) {
62
- return reject(err.body ? err.body : err);
63
+ logger.error(`Ramp request failed with error (${URL}): ${err.stack || err}`);
64
+ return reject(new ClientError('Failed to get Ramp quote'));
63
65
  } else {
64
- return resolve(data.body ? data.body : data);
66
+ const success = data.statusCode >= 200 && data.statusCode < 300;
67
+ if (!success) {
68
+ logger.warn(`Ramp request failed with status code ${data.statusCode}: ${URL}`);
69
+ }
70
+ if (!data.body) {
71
+ return reject(new ClientError('Ramp did not return quote data'));
72
+ }
73
+ return resolve(data.body);
65
74
  }
66
75
  }
67
76
  );
@@ -99,9 +108,17 @@ export class RampService {
99
108
  },
100
109
  (err, data) => {
101
110
  if (err) {
102
- return reject(err.body ? err.body : err);
111
+ logger.error(`Ramp request failed with error (${URL}): ${err.stack || err}`);
112
+ return reject(new ClientError('Failed to get Ramp sell quote'));
103
113
  } else {
104
- return resolve(data.body ? data.body : data);
114
+ const success = data.statusCode >= 200 && data.statusCode < 300;
115
+ if (!success) {
116
+ logger.warn(`Ramp request failed with status code ${data.statusCode}: ${URL}`);
117
+ }
118
+ if (!data.body) {
119
+ return reject(new ClientError('Ramp did not return sell quote data'));
120
+ }
121
+ return resolve(data.body);
105
122
  }
106
123
  }
107
124
  );
@@ -232,9 +249,17 @@ export class RampService {
232
249
  },
233
250
  (err, data) => {
234
251
  if (err) {
235
- return reject(err.body ? err.body : err);
252
+ logger.error(`Ramp request failed with error (${URL}): ${err.stack || err}`);
253
+ return reject(new ClientError('Failed to get Ramp assets'));
236
254
  } else {
237
- return resolve(data.body ? data.body : data);
255
+ const success = data.statusCode >= 200 && data.statusCode < 300;
256
+ if (!success) {
257
+ logger.warn(`Ramp request failed with status code ${data.statusCode}: ${URL}`);
258
+ }
259
+ if (!data.body) {
260
+ return reject(new ClientError('Ramp did not return assets data'));
261
+ }
262
+ return resolve(data.body);
238
263
  }
239
264
  }
240
265
  );
@@ -258,6 +283,7 @@ export class RampService {
258
283
  qs.push('secret=' + req.body.saleViewToken);
259
284
 
260
285
  const URL = API + `/host-api/v3/offramp/sale/${req.body.id}?${qs.join('&')}`;
286
+ const safeURL = URL.replace('secret=' + req.body.saleViewToken, 'secret=***');
261
287
 
262
288
  this.request.get(
263
289
  URL,
@@ -267,9 +293,17 @@ export class RampService {
267
293
  },
268
294
  (err, data) => {
269
295
  if (err) {
270
- return reject(err.body ? err.body : err);
296
+ logger.error(`Ramp request failed with error (${safeURL}): ${err.stack || err}`);
297
+ return reject(new ClientError('Failed to get Ramp sell transaction details'));
271
298
  } else {
272
- return resolve(data.body ? data.body : data);
299
+ const success = data.statusCode >= 200 && data.statusCode < 300;
300
+ if (!success) {
301
+ logger.warn(`Ramp request failed with status code ${data.statusCode}: ${safeURL}`);
302
+ }
303
+ if (!data.body) {
304
+ return reject(new ClientError('Ramp did not return sell transaction details'));
305
+ }
306
+ return resolve(data.body);
273
307
  }
274
308
  }
275
309
  );