@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
@@ -1,6 +1,7 @@
1
1
  import * as request from 'request';
2
2
  import config from '../config';
3
3
  import { ClientError } from '../lib/errors/clienterror';
4
+ import logger from '../lib/logger';
4
5
  import { checkRequired } from '../lib/server';
5
6
 
6
7
  export class SardineService {
@@ -68,9 +69,17 @@ export class SardineService {
68
69
  },
69
70
  (err, data) => {
70
71
  if (err) {
71
- return reject(err.body ? err.body : err);
72
+ logger.error(`Sardine request failed with error (${URL}): ${err.stack || err}`);
73
+ return reject(new ClientError('Failed to get Sardine quote'));
72
74
  } else {
73
- return resolve(data.body ? data.body : data);
75
+ const success = data.statusCode >= 200 && data.statusCode < 300;
76
+ if (!success) {
77
+ logger.warn(`Sardine request failed with status code ${data.statusCode}: ${URL}`);
78
+ }
79
+ if (!data.body) {
80
+ return reject(new ClientError('Sardine did not return a quote'));
81
+ }
82
+ return resolve(data.body);
74
83
  }
75
84
  }
76
85
  );
@@ -102,9 +111,17 @@ export class SardineService {
102
111
  },
103
112
  (err, data) => {
104
113
  if (err) {
105
- return reject(err.body ? err.body : err);
114
+ logger.error(`Sardine request failed with error (${URL}): ${err.stack || err}`);
115
+ return reject(new ClientError('Failed to get Sardine currency limits'));
106
116
  } else {
107
- return resolve(data.body ? data.body : data);
117
+ const success = data.statusCode >= 200 && data.statusCode < 300;
118
+ if (!success) {
119
+ logger.warn(`Sardine request failed with status code ${data.statusCode}: ${URL}`);
120
+ }
121
+ if (!data.body) {
122
+ return reject(new ClientError('Sardine did not return currency limits'));
123
+ }
124
+ return resolve(data.body);
108
125
  }
109
126
  }
110
127
  );
@@ -141,9 +158,17 @@ export class SardineService {
141
158
  },
142
159
  (err, data) => {
143
160
  if (err) {
144
- return reject(err.body ? err.body : err);
161
+ logger.error(`Sardine request failed with error (${URL}): ${err.stack || err}`);
162
+ return reject(new ClientError('Failed to get Sardine token'));
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(`Sardine request failed with status code ${data.statusCode}: ${URL}`);
167
+ }
168
+ if (!data.body) {
169
+ return reject(new ClientError('Sardine did not return a token'));
170
+ }
171
+ return resolve(data.body);
147
172
  }
148
173
  }
149
174
  );
@@ -175,9 +200,17 @@ export class SardineService {
175
200
  },
176
201
  (err, data) => {
177
202
  if (err) {
178
- return reject(err.body ? err.body : err);
203
+ logger.error(`Sardine request failed with error (${URL}): ${err.stack || err}`);
204
+ return reject(new ClientError('Failed to get Sardine supported tokens'));
179
205
  } else {
180
- return resolve(data.body ? data.body : data);
206
+ const success = data.statusCode >= 200 && data.statusCode < 300;
207
+ if (!success) {
208
+ logger.warn(`Sardine request failed with status code ${data.statusCode}: ${URL}`);
209
+ }
210
+ if (!data.body) {
211
+ return reject(new ClientError('Sardine did not return supported tokens'));
212
+ }
213
+ return resolve(data.body);
181
214
  }
182
215
  }
183
216
  );
@@ -226,9 +259,17 @@ export class SardineService {
226
259
  },
227
260
  (err, data) => {
228
261
  if (err) {
229
- return reject(err.body ? err.body : err);
262
+ logger.error(`Sardine request failed with error (${URL}): ${err.stack || err}`);
263
+ return reject(new ClientError('Failed to get Sardine order details'));
230
264
  } else {
231
- return resolve(data.body ? data.body : data);
265
+ const success = data.statusCode >= 200 && data.statusCode < 300;
266
+ if (!success) {
267
+ logger.warn(`Sardine request failed with status code ${data.statusCode}: ${URL}`);
268
+ }
269
+ if (!data.body) {
270
+ return reject(new ClientError('Sardine did not return order details'));
271
+ }
272
+ return resolve(data.body);
232
273
  }
233
274
  }
234
275
  );
@@ -3,6 +3,7 @@ import Uuid from 'uuid';
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 SimplexService {
@@ -64,9 +65,17 @@ export class SimplexService {
64
65
  },
65
66
  (err, data) => {
66
67
  if (err) {
67
- return reject(err.body ? err.body : err);
68
+ logger.error(`Simplex request failed with error (${URL}): ${err.stack || err}`);
69
+ return reject(new ClientError('Failed to get Simplex supported currencies'));
68
70
  } else {
69
- return resolve(data.body ? data.body : data);
71
+ const success = data.statusCode >= 200 && data.statusCode < 300;
72
+ if (!success) {
73
+ logger.warn(`Simplex request failed with status code ${data.statusCode}: ${URL}`);
74
+ }
75
+ if (!data.body) {
76
+ return reject(new ClientError('Simplex did not return supported currencies'));
77
+ }
78
+ return resolve(data.body);
70
79
  }
71
80
  }
72
81
  );
@@ -94,8 +103,10 @@ export class SimplexService {
94
103
  req.body.payment_methods = req.body.payment_methods.map(item => item === 'simplex_account' ? 'sepa_open_banking' : item);
95
104
  }
96
105
 
106
+ const URL: string = API + '/wallet/merchant/v2/quote';
107
+
97
108
  this.request.post(
98
- API + '/wallet/merchant/v2/quote',
109
+ URL,
99
110
  {
100
111
  headers,
101
112
  body: req.body,
@@ -103,9 +114,17 @@ export class SimplexService {
103
114
  },
104
115
  (err, data) => {
105
116
  if (err) {
106
- return reject(err.body ? err.body : err);
117
+ logger.error(`Simplex request failed with error (${URL}): ${err.stack || err}`);
118
+ return reject(new ClientError('Failed to get Simplex quote'));
107
119
  } else {
108
- return resolve(data.body ? data.body : null);
120
+ const success = data.statusCode >= 200 && data.statusCode < 300;
121
+ if (!success) {
122
+ logger.warn(`Simplex request failed with status code ${data.statusCode}: ${URL}`);
123
+ }
124
+ if (!data.body) {
125
+ return reject(new ClientError('Simplex did not return a quote'));
126
+ }
127
+ return resolve(data.body);
109
128
  }
110
129
  }
111
130
  );
@@ -148,9 +167,17 @@ export class SimplexService {
148
167
  },
149
168
  (err, data) => {
150
169
  if (err) {
151
- return reject(err.body ? err.body : err);
170
+ logger.error(`Simplex request failed with error (${URL}): ${err.stack || err}`);
171
+ return reject(new ClientError('Failed to get Simplex sell quote'));
152
172
  } else {
153
- return resolve(data.body ? data.body : data);
173
+ const success = data.statusCode >= 200 && data.statusCode < 300;
174
+ if (!success) {
175
+ logger.warn(`Simplex request failed with status code ${data.statusCode}: ${URL}`);
176
+ }
177
+ if (!data.body) {
178
+ return reject(new ClientError('Simplex did not return a sell quote'));
179
+ }
180
+ return resolve(data.body);
154
181
  }
155
182
  }
156
183
  );
@@ -196,8 +223,10 @@ export class SimplexService {
196
223
  Authorization: 'ApiKey ' + API_KEY
197
224
  };
198
225
 
226
+ const URL: string = API + '/wallet/merchant/v2/payments/partner/data';
227
+
199
228
  this.request.post(
200
- API + '/wallet/merchant/v2/payments/partner/data',
229
+ URL,
201
230
  {
202
231
  headers,
203
232
  body: req.body,
@@ -205,8 +234,16 @@ export class SimplexService {
205
234
  },
206
235
  (err, data) => {
207
236
  if (err) {
208
- return reject(err.body ? err.body : err);
237
+ logger.error(`Simplex request failed with error (${URL}): ${err.stack || err}`);
238
+ return reject(new ClientError('Failed to get Simplex payment data'));
209
239
  } else {
240
+ const success = data.statusCode >= 200 && data.statusCode < 300;
241
+ if (!success) {
242
+ logger.warn(`Simplex request failed with status code ${data.statusCode}: ${URL}`);
243
+ }
244
+ if (!data.body) {
245
+ return reject(new ClientError('Simplex did not return payment data'));
246
+ }
210
247
  data.body.payment_id = paymentId;
211
248
  data.body.order_id = orderId;
212
249
  data.body.app_provider_id = appProviderId;
@@ -242,8 +279,10 @@ export class SimplexService {
242
279
  headers['x-country-code'] = req.body.userCountry.toUpperCase();
243
280
  }
244
281
 
282
+ const URL: string = API + '/v3/initiate-sell/widget';
283
+
245
284
  this.request.post(
246
- API + '/v3/initiate-sell/widget',
285
+ URL,
247
286
  {
248
287
  headers,
249
288
  body: req.body,
@@ -251,8 +290,16 @@ export class SimplexService {
251
290
  },
252
291
  (err, data) => {
253
292
  if (err) {
254
- return reject(err.body ? err.body : err);
293
+ logger.error(`Simplex request failed with error (${URL}): ${err.stack || err}`);
294
+ return reject(new ClientError('Failed to initiate Simplex sell payment'));
255
295
  } else {
296
+ const success = data.statusCode >= 200 && data.statusCode < 300;
297
+ if (!success) {
298
+ logger.warn(`Simplex request failed with status code ${data.statusCode}: ${URL}`);
299
+ }
300
+ if (!data.body) {
301
+ return reject(new ClientError('Simplex did not return sell data'));
302
+ }
256
303
  data.body.app_sell_ref_id = appSellRefId;
257
304
  return resolve(data.body);
258
305
  }
@@ -1,6 +1,7 @@
1
1
  import * as request from 'request';
2
2
  import config from '../config';
3
3
  import { ClientError } from '../lib/errors/clienterror';
4
+ import logger from '../lib/logger';
4
5
  import { checkRequired } from '../lib/server';
5
6
 
6
7
  export class ThorswapService {
@@ -47,7 +48,7 @@ export class ThorswapService {
47
48
  'x-api-key': API_KEY
48
49
  };
49
50
 
50
- const uriPath: string = req?.body?.includeDetails ? '/tokenlist/utils/chains/details' : '/tokenlist/utils/chains';
51
+ const uriPath: string = '/tokenlist/utils/chains' + (req?.body?.includeDetails ? '/details' : '');
51
52
  const URL: string = API + uriPath;
52
53
 
53
54
  this.request.get(
@@ -58,9 +59,17 @@ export class ThorswapService {
58
59
  },
59
60
  (err, data) => {
60
61
  if (err) {
61
- return reject(err.body ? err.body : err);
62
+ logger.error(`Thorswap request failed with error (${URL}): ${err.stack || err}`);
63
+ return reject(new ClientError('Failed to get Thorswap supported chains'));
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(`Thorswap request failed with status code ${data.statusCode}: ${URL}`);
68
+ }
69
+ if (!data.body) {
70
+ return reject(new ClientError('Thorswap did not return supported chains'));
71
+ }
72
+ return resolve(data.body);
64
73
  }
65
74
  }
66
75
  );
@@ -84,7 +93,7 @@ export class ThorswapService {
84
93
  const qs: string[] = [];
85
94
  qs.push('categories=' + (req?.body?.categories ?? 'all'));
86
95
 
87
- const uriPath: string = req?.body?.includeDetails ? '/tokenlist/utils/currencies/details' : '/tokenlist/utils/currencies';
96
+ const uriPath: string = '/tokenlist/utils/currencies' + (req?.body?.includeDetails ? '/details' : '');
88
97
  const URL: string = API + `${uriPath}?${qs.join('&')}`;
89
98
 
90
99
  this.request.get(
@@ -95,9 +104,17 @@ export class ThorswapService {
95
104
  },
96
105
  (err, data) => {
97
106
  if (err) {
98
- return reject(err.body ? err.body : err);
107
+ logger.error(`Thorswap request failed with error (${URL}): ${err.stack || err}`);
108
+ return reject(new ClientError('Failed to get Thorswap supported currencies'));
99
109
  } else {
100
- return resolve(data.body ? data.body : data);
110
+ const success = data.statusCode >= 200 && data.statusCode < 300;
111
+ if (!success) {
112
+ logger.warn(`Thorswap request failed with status code ${data.statusCode}: ${URL}`);
113
+ }
114
+ if (!data.body) {
115
+ return reject(new ClientError('Thorswap did not return supported currencies'));
116
+ }
117
+ return resolve(data.body);
101
118
  }
102
119
  }
103
120
  );
@@ -147,9 +164,17 @@ export class ThorswapService {
147
164
  },
148
165
  (err, data) => {
149
166
  if (err) {
150
- return reject(err.body ? err.body : err);
167
+ logger.error(`Thorswap request failed with error (${URL}): ${err.stack || err}`);
168
+ return reject(new ClientError('Failed to get Thorswap swap quote'));
151
169
  } else {
152
- return resolve(data.body ? data.body : data);
170
+ const success = data.statusCode >= 200 && data.statusCode < 300;
171
+ if (!success) {
172
+ logger.warn(`Thorswap request failed with status code ${data.statusCode}: ${URL}`);
173
+ }
174
+ if (!data.body) {
175
+ return reject(new ClientError('Thorswap did not return a swap quote'));
176
+ }
177
+ return resolve(data.body);
153
178
  }
154
179
  }
155
180
  );
@@ -174,8 +199,10 @@ export class ThorswapService {
174
199
  return reject(new ClientError("Thorswap's request missing arguments"));
175
200
  }
176
201
 
202
+ const URL = API + '/tracker/v2/txn';
203
+
177
204
  this.request.post(
178
- API + '/tracker/v2/txn',
205
+ URL,
179
206
  // API + '/apiusage/v2/txn',
180
207
  // 'https://api.swapkit.dev/track',
181
208
  // /apiusage/v2/txn
@@ -186,9 +213,17 @@ export class ThorswapService {
186
213
  },
187
214
  (err, data) => {
188
215
  if (err) {
189
- return reject(err.body ? err.body : err);
216
+ logger.error(`Thorswap request failed with error (${URL}): ${err.stack || err}`);
217
+ return reject(new ClientError('Failed to get Thorswap swap transaction'));
190
218
  } else {
191
- return resolve(data.body ? data.body : data);
219
+ const success = data.statusCode >= 200 && data.statusCode < 300;
220
+ if (!success) {
221
+ logger.warn(`Thorswap request failed with status code ${data.statusCode}: ${URL}`);
222
+ }
223
+ if (!data.body) {
224
+ return reject(new ClientError('Thorswap did not return a swap transaction'));
225
+ }
226
+ return resolve(data.body);
192
227
  }
193
228
  }
194
229
  );
@@ -2,6 +2,7 @@ import * as request from 'request';
2
2
  import config from '../config';
3
3
  import { Utils } from '../lib/common/utils';
4
4
  import { ClientError } from '../lib/errors/clienterror';
5
+ import logger from '../lib/logger';
5
6
  import { checkRequired } from '../lib/server';
6
7
 
7
8
  export class TransakService {
@@ -89,9 +90,17 @@ export class TransakService {
89
90
  },
90
91
  (err, data) => {
91
92
  if (err) {
92
- return reject(err.body ? err.body : err);
93
+ logger.error(`Transak request failed with error (${URL}): ${err.stack || err}`);
94
+ return reject(new ClientError('Failed to get Transak access token'));
93
95
  } else {
94
- return resolve(data.body ? data.body : data);
96
+ const success = data.statusCode >= 200 && data.statusCode < 300;
97
+ if (!success) {
98
+ logger.warn(`Transak request failed with status code ${data.statusCode}: ${URL}`);
99
+ }
100
+ if (!data.body) {
101
+ return reject(new ClientError('Transak did not return an access token'));
102
+ }
103
+ return resolve(data.body);
95
104
  }
96
105
  }
97
106
  );
@@ -126,9 +135,17 @@ export class TransakService {
126
135
  },
127
136
  (err, data) => {
128
137
  if (err) {
129
- return reject(err.body ? err.body : err);
138
+ logger.error(`Transak request failed with error (${URL}): ${err.stack || err}`);
139
+ return reject(new ClientError('Failed to get Transak supported currencies'));
130
140
  } else {
131
- return resolve(data.body ? data.body : data);
141
+ const success = data.statusCode >= 200 && data.statusCode < 300;
142
+ if (!success) {
143
+ logger.warn(`Transak request failed with status code ${data.statusCode}: ${URL}`);
144
+ }
145
+ if (!data.body) {
146
+ return reject(new ClientError('Transak did not return supported currencies'));
147
+ }
148
+ return resolve(data.body);
132
149
  }
133
150
  }
134
151
  );
@@ -163,9 +180,17 @@ export class TransakService {
163
180
  },
164
181
  (err, data) => {
165
182
  if (err) {
166
- return reject(err.body ? err.body : err);
183
+ logger.error(`Transak request failed with error (${URL}): ${err.stack || err}`);
184
+ return reject(new ClientError('Failed to get Transak supported fiat currencies'));
167
185
  } else {
168
- return resolve(data.body ? data.body : data);
186
+ const success = data.statusCode >= 200 && data.statusCode < 300;
187
+ if (!success) {
188
+ logger.warn(`Transak request failed with status code ${data.statusCode}: ${URL}`);
189
+ }
190
+ if (!data.body) {
191
+ return reject(new ClientError('Transak did not return supported fiat currencies'));
192
+ }
193
+ return resolve(data.body);
169
194
  }
170
195
  }
171
196
  );
@@ -214,9 +239,17 @@ export class TransakService {
214
239
  },
215
240
  (err, data) => {
216
241
  if (err) {
217
- return reject(err.body ? err.body : err);
242
+ logger.error(`Transak request failed with error (${URL}): ${err.stack || err}`);
243
+ return reject(new ClientError('Failed to get Transak quote'));
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(`Transak request failed with status code ${data.statusCode}: ${URL}`);
248
+ }
249
+ if (!data.body) {
250
+ return reject(new ClientError('Transak did not return a quote'));
251
+ }
252
+ return resolve(data.body);
220
253
  }
221
254
  }
222
255
  );
@@ -282,7 +315,8 @@ export class TransakService {
282
315
  },
283
316
  (err, data) => {
284
317
  if (err) {
285
- return reject(err.body ? err.body : err);
318
+ logger.error(`Transak request failed with error (${URL}): ${err.stack || err}`);
319
+ return reject(new ClientError('Failed to get Transak signed payment URL'));
286
320
  } else {
287
321
  return resolve({ urlWithSignature: data?.body?.data?.widgetUrl ?? data?.data?.widgetUrl });
288
322
  }
@@ -323,9 +357,17 @@ export class TransakService {
323
357
  },
324
358
  (err, data) => {
325
359
  if (err) {
326
- return reject(err.body ? err.body : err);
360
+ logger.error(`Transak request failed with error (${URL}): ${err.stack || err}`);
361
+ return reject(new ClientError('Failed to get Transak order details'));
327
362
  } else {
328
- return resolve(data.body ? data.body : data);
363
+ const success = data.statusCode >= 200 && data.statusCode < 300;
364
+ if (!success) {
365
+ logger.warn(`Transak request failed with status code ${data.statusCode}: ${URL}`);
366
+ }
367
+ if (!data.body) {
368
+ return reject(new ClientError('Transak did not return order details'));
369
+ }
370
+ return resolve(data.body);
329
371
  }
330
372
  }
331
373
  );
@@ -459,18 +459,6 @@ export function registerServiceRoutes(router: express.Router, context: RouteCont
459
459
  });
460
460
  });
461
461
 
462
- router.post('/v1/service/wyre/walletOrderQuotation', (req, res) => {
463
- respondWithAuthServer(req, res, context, server => {
464
- return server.externalServices.wyre.wyreWalletOrderQuotation(req);
465
- });
466
- });
467
-
468
- router.post('/v1/service/wyre/walletOrderReservation', (req, res) => {
469
- respondWithAuthServer(req, res, context, server => {
470
- return server.externalServices.wyre.wyreWalletOrderReservation(req);
471
- });
472
- });
473
-
474
462
  router.post('/v1/service/changelly/getCurrencies', (req, res) => {
475
463
  respondWithPublicServer(req, res, context, server => {
476
464
  return server.externalServices.changelly.changellyGetCurrencies(req);
package/src/lib/server.ts CHANGED
@@ -27,7 +27,6 @@ import { SardineService } from '../externalservices/sardine';
27
27
  import { SimplexService } from '../externalservices/simplex';
28
28
  import { ThorswapService } from '../externalservices/thorswap';
29
29
  import { TransakService } from '../externalservices/transak';
30
- import { WyreService } from '../externalservices/wyre';
31
30
  import { serverMessages } from '../serverMessages';
32
31
  import { BCHAddressTranslator } from './bchaddresstranslator';
33
32
  import { BlockChainExplorer } from './blockchainexplorer';
@@ -160,7 +159,6 @@ export class WalletService implements IWalletService {
160
159
  simplex: SimplexService;
161
160
  thorswap: ThorswapService;
162
161
  transak: TransakService;
163
- wyre: WyreService;
164
162
  coinGecko: CoinGeckoService;
165
163
  };
166
164
 
@@ -190,7 +188,6 @@ export class WalletService implements IWalletService {
190
188
  simplex: new SimplexService(),
191
189
  thorswap: new ThorswapService(),
192
190
  transak: new TransakService(),
193
- wyre: new WyreService(),
194
191
  coinGecko: new CoinGeckoService(this.storage),
195
192
  };
196
193
  }
@@ -20,7 +20,6 @@ export interface BuyCryptoConfig {
20
20
  sardine?: ExchangeConfig;
21
21
  simplex?: ExchangeConfig;
22
22
  transak?: ExchangeConfig;
23
- wyre?: ExchangeConfig;
24
23
  }
25
24
 
26
25
  export interface SellCryptoConfig {