@bitpay-labs/bitcore-wallet-service 11.8.1 → 11.8.2

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 (84) hide show
  1. package/package.json +2 -2
  2. package/src/bws.ts +2 -0
  3. package/src/lib/common/utils.ts +6 -0
  4. package/src/lib/expressapp.ts +63 -2378
  5. package/src/lib/model/txproposal.ts +14 -10
  6. package/src/lib/routes/advertisements.ts +151 -0
  7. package/src/lib/routes/blockchain.ts +152 -0
  8. package/src/lib/routes/context.ts +149 -0
  9. package/src/lib/routes/maintenance.ts +111 -0
  10. package/src/lib/routes/moralis.ts +89 -0
  11. package/src/lib/routes/notifications.ts +135 -0
  12. package/src/lib/routes/services.ts +528 -0
  13. package/src/lib/routes/setup.ts +86 -0
  14. package/src/lib/routes/transactions.ts +196 -0
  15. package/src/lib/routes/walletdata.ts +167 -0
  16. package/src/lib/routes/wallets.ts +289 -0
  17. package/src/lib/server.ts +24 -1
  18. package/src/lib/storage.ts +3 -0
  19. package/ts_build/package.json +4 -4
  20. package/ts_build/src/bws.js +3 -0
  21. package/ts_build/src/bws.js.map +1 -1
  22. package/ts_build/src/lib/common/index.d.ts +1 -0
  23. package/ts_build/src/lib/common/index.d.ts.map +1 -1
  24. package/ts_build/src/lib/common/utils.d.ts +1 -0
  25. package/ts_build/src/lib/common/utils.d.ts.map +1 -1
  26. package/ts_build/src/lib/common/utils.js +6 -0
  27. package/ts_build/src/lib/common/utils.js.map +1 -1
  28. package/ts_build/src/lib/expressapp.d.ts.map +1 -1
  29. package/ts_build/src/lib/expressapp.js +64 -2224
  30. package/ts_build/src/lib/expressapp.js.map +1 -1
  31. package/ts_build/src/lib/model/txproposal.d.ts +1 -4
  32. package/ts_build/src/lib/model/txproposal.d.ts.map +1 -1
  33. package/ts_build/src/lib/model/txproposal.js +13 -9
  34. package/ts_build/src/lib/model/txproposal.js.map +1 -1
  35. package/ts_build/src/lib/routes/advertisements.d.ts +11 -0
  36. package/ts_build/src/lib/routes/advertisements.d.ts.map +1 -0
  37. package/ts_build/src/lib/routes/advertisements.js +119 -0
  38. package/ts_build/src/lib/routes/advertisements.js.map +1 -0
  39. package/ts_build/src/lib/routes/blockchain.d.ts +13 -0
  40. package/ts_build/src/lib/routes/blockchain.d.ts.map +1 -0
  41. package/ts_build/src/lib/routes/blockchain.js +159 -0
  42. package/ts_build/src/lib/routes/blockchain.js.map +1 -0
  43. package/ts_build/src/lib/routes/context.d.ts +12 -0
  44. package/ts_build/src/lib/routes/context.d.ts.map +1 -0
  45. package/ts_build/src/lib/routes/context.js +115 -0
  46. package/ts_build/src/lib/routes/context.js.map +1 -0
  47. package/ts_build/src/lib/routes/maintenance.d.ts +10 -0
  48. package/ts_build/src/lib/routes/maintenance.d.ts.map +1 -0
  49. package/ts_build/src/lib/routes/maintenance.js +131 -0
  50. package/ts_build/src/lib/routes/maintenance.js.map +1 -0
  51. package/ts_build/src/lib/routes/moralis.d.ts +9 -0
  52. package/ts_build/src/lib/routes/moralis.d.ts.map +1 -0
  53. package/ts_build/src/lib/routes/moralis.js +78 -0
  54. package/ts_build/src/lib/routes/moralis.js.map +1 -0
  55. package/ts_build/src/lib/routes/notifications.d.ts +10 -0
  56. package/ts_build/src/lib/routes/notifications.d.ts.map +1 -0
  57. package/ts_build/src/lib/routes/notifications.js +120 -0
  58. package/ts_build/src/lib/routes/notifications.js.map +1 -0
  59. package/ts_build/src/lib/routes/services.d.ts +11 -0
  60. package/ts_build/src/lib/routes/services.d.ts.map +1 -0
  61. package/ts_build/src/lib/routes/services.js +430 -0
  62. package/ts_build/src/lib/routes/services.js.map +1 -0
  63. package/ts_build/src/lib/routes/setup.d.ts +4 -0
  64. package/ts_build/src/lib/routes/setup.d.ts.map +1 -0
  65. package/ts_build/src/lib/routes/setup.js +79 -0
  66. package/ts_build/src/lib/routes/setup.js.map +1 -0
  67. package/ts_build/src/lib/routes/transactions.d.ts +9 -0
  68. package/ts_build/src/lib/routes/transactions.d.ts.map +1 -0
  69. package/ts_build/src/lib/routes/transactions.js +188 -0
  70. package/ts_build/src/lib/routes/transactions.js.map +1 -0
  71. package/ts_build/src/lib/routes/walletdata.d.ts +10 -0
  72. package/ts_build/src/lib/routes/walletdata.d.ts.map +1 -0
  73. package/ts_build/src/lib/routes/walletdata.js +186 -0
  74. package/ts_build/src/lib/routes/walletdata.js.map +1 -0
  75. package/ts_build/src/lib/routes/wallets.d.ts +13 -0
  76. package/ts_build/src/lib/routes/wallets.d.ts.map +1 -0
  77. package/ts_build/src/lib/routes/wallets.js +292 -0
  78. package/ts_build/src/lib/routes/wallets.js.map +1 -0
  79. package/ts_build/src/lib/server.d.ts.map +1 -1
  80. package/ts_build/src/lib/server.js +19 -1
  81. package/ts_build/src/lib/server.js.map +1 -1
  82. package/ts_build/src/lib/storage.d.ts.map +1 -1
  83. package/ts_build/src/lib/storage.js +3 -0
  84. package/ts_build/src/lib/storage.js.map +1 -1
@@ -0,0 +1,135 @@
1
+ import express from 'express';
2
+ import { Common } from '../common';
3
+ import type * as Types from '../../types/expressapp';
4
+
5
+ const { Defaults } = Common;
6
+
7
+ interface RouteContext {
8
+ getServerWithAuth: Types.GetServerWithAuthFn;
9
+ logDeprecated: Types.LogDeprecatedFn;
10
+ returnError: Types.ReturnErrorFn;
11
+ }
12
+
13
+ export function registerNotificationRoutes(router: express.Router, context: RouteContext) {
14
+ const { getServerWithAuth, logDeprecated, returnError } = context;
15
+
16
+ router.post('/v1/login/', (req, res) => {
17
+ getServerWithAuth(req, res, server => {
18
+ server.login({}, (err, session) => {
19
+ if (err) return returnError(err, res, req);
20
+ res.json(session);
21
+ });
22
+ });
23
+ });
24
+
25
+ router.post('/v1/logout/', (req, res) => {
26
+ getServerWithAuth(req, res, server => {
27
+ server.logout({}, err => {
28
+ if (err) return returnError(err, res, req);
29
+ res.end();
30
+ });
31
+ });
32
+ });
33
+
34
+ router.get('/v1/notifications/', (req, res) => {
35
+ getServerWithAuth(
36
+ req,
37
+ res,
38
+ {
39
+ allowSession: true
40
+ },
41
+ server => {
42
+ const timeSpan = req.query.timeSpan
43
+ ? Math.min(+req.query.timeSpan || 0, Defaults.MAX_NOTIFICATIONS_TIMESPAN)
44
+ : Defaults.NOTIFICATIONS_TIMESPAN;
45
+ const opts = {
46
+ minTs: +Date.now() - timeSpan * 1000,
47
+ notificationId: req.query.notificationId
48
+ };
49
+
50
+ server.getNotifications(opts, (err, notifications) => {
51
+ if (err) return returnError(err, res, req);
52
+ res.json(notifications);
53
+ });
54
+ }
55
+ );
56
+ });
57
+
58
+ router.post('/v1/pushnotifications/subscriptions/', (req, res) => {
59
+ getServerWithAuth(req, res, server => {
60
+ server.pushNotificationsSubscribe(req.body, (err, response) => {
61
+ if (err) return returnError(err, res, req);
62
+ res.json(response);
63
+ });
64
+ });
65
+ });
66
+
67
+ router.post('/v2/pushnotifications/subscriptions/', (req, res) => {
68
+ getServerWithAuth(req, res, server => {
69
+ server.pushNotificationsBrazeSubscribe(req.body, (err, response) => {
70
+ if (err) return returnError(err, res, req);
71
+ res.json(response);
72
+ });
73
+ });
74
+ });
75
+
76
+ router.delete('/v1/pushnotifications/subscriptions/', (req, res) => {
77
+ logDeprecated(req);
78
+ getServerWithAuth(req, res, server => {
79
+ server.pushNotificationsUnsubscribe(
80
+ {
81
+ token: 'dummy'
82
+ },
83
+ (err, response) => {
84
+ if (err) return returnError(err, res, req);
85
+ res.json(response);
86
+ }
87
+ );
88
+ });
89
+ });
90
+
91
+ router.delete('/v2/pushnotifications/subscriptions/:token', (req, res) => {
92
+ const opts = {
93
+ token: req.params['token']
94
+ };
95
+ getServerWithAuth(req, res, server => {
96
+ server.pushNotificationsUnsubscribe(opts, (err, response) => {
97
+ if (err) return returnError(err, res, req);
98
+ res.json(response);
99
+ });
100
+ });
101
+ });
102
+
103
+ router.delete('/v3/pushnotifications/subscriptions/:externalUserId', (req, res) => {
104
+ const opts = {
105
+ externalUserId: req.params['externalUserId']
106
+ };
107
+ getServerWithAuth(req, res, server => {
108
+ server.pushNotificationsBrazeUnsubscribe(opts, (err, response) => {
109
+ if (err) return returnError(err, res, req);
110
+ res.json(response);
111
+ });
112
+ });
113
+ });
114
+
115
+ router.post('/v1/txconfirmations/', (req, res) => {
116
+ getServerWithAuth(req, res, server => {
117
+ server.txConfirmationSubscribe(req.body, (err, response) => {
118
+ if (err) return returnError(err, res, req);
119
+ res.json(response);
120
+ });
121
+ });
122
+ });
123
+
124
+ router.delete('/v1/txconfirmations/:txid', (req, res) => {
125
+ const opts = {
126
+ txid: req.params['txid']
127
+ };
128
+ getServerWithAuth(req, res, server => {
129
+ server.txConfirmationUnsubscribe(opts, (err, response) => {
130
+ if (err) return returnError(err, res, req);
131
+ res.json(response);
132
+ });
133
+ });
134
+ });
135
+ }
@@ -0,0 +1,528 @@
1
+ import express from 'express';
2
+ import rp from 'request-promise-native';
3
+ import { Common } from '../common';
4
+ import type * as Types from '../../types/expressapp';
5
+ import type { WalletService } from '../server';
6
+
7
+ const { Defaults } = Common;
8
+
9
+ interface RouteContext {
10
+ getServer: Types.GetServerFn;
11
+ getServerWithAuth: Types.GetServerWithAuthFn;
12
+ setPublicCache: (res: express.Response, seconds: number) => void;
13
+ returnError: Types.ReturnErrorFn;
14
+ }
15
+
16
+ type RouteHandler = (server: WalletService) => Promise<any> | any;
17
+
18
+ const ONE_MINUTE = 60;
19
+
20
+ function callbackResult<T>(fn: (cb: (err?: any, data?: T) => void) => void): Promise<T> {
21
+ return new Promise((resolve, reject) => {
22
+ fn((err, data) => {
23
+ if (err) return reject(err);
24
+ return resolve(data as T);
25
+ });
26
+ });
27
+ }
28
+
29
+ function getServerOrReturnError(req, res, context: RouteContext): WalletService | null {
30
+ try {
31
+ return context.getServer(req, res);
32
+ } catch (err) {
33
+ context.returnError(err, res, req);
34
+ return null;
35
+ }
36
+ }
37
+
38
+ function respondWithPublicServer(req, res, context: RouteContext, handler: RouteHandler) {
39
+ const server = getServerOrReturnError(req, res, context);
40
+ if (!server) return;
41
+
42
+ Promise.resolve()
43
+ .then(() => handler(server))
44
+ .then(response => {
45
+ res.json(response);
46
+ })
47
+ .catch(err => {
48
+ context.returnError(err ?? 'unknown', res, req);
49
+ });
50
+ }
51
+
52
+ function respondWithAuthServer(req, res, context: RouteContext, handler: RouteHandler) {
53
+ context.getServerWithAuth(req, res, server => {
54
+ Promise.resolve()
55
+ .then(() => handler(server))
56
+ .then(response => {
57
+ res.json(response);
58
+ })
59
+ .catch(err => {
60
+ context.returnError(err ?? 'unknown', res, req);
61
+ });
62
+ });
63
+ }
64
+
65
+ export function registerServiceRoutes(router: express.Router, context: RouteContext) {
66
+ const { getServerWithAuth, setPublicCache, returnError } = context;
67
+
68
+ router.get('/latest-version', async (req, res) => {
69
+ setPublicCache(res, 10 * ONE_MINUTE);
70
+ try {
71
+ res.setHeader('User-Agent', 'copay');
72
+ const options = {
73
+ uri: 'https://api.github.com/repos/bitpay/wallet/releases/latest',
74
+ headers: {
75
+ 'User-Agent': 'Copay'
76
+ },
77
+ json: true
78
+ };
79
+
80
+ const server = getServerOrReturnError(req, res, context);
81
+ if (!server) return;
82
+
83
+ server.storage.checkAndUseGlobalCache(
84
+ 'latest-copay-version',
85
+ Defaults.COPAY_VERSION_CACHE_DURATION,
86
+ async (err, version) => {
87
+ if (err) {
88
+ return res.send(err);
89
+ }
90
+ if (version) {
91
+ return res.json({ version });
92
+ } else {
93
+ try {
94
+ const htmlString = await rp(options);
95
+ if (htmlString['tag_name']) {
96
+ server.storage.storeGlobalCache('latest-copay-version', htmlString['tag_name'], () => {
97
+ return res.json({ version: htmlString['tag_name'] });
98
+ });
99
+ }
100
+ } catch (fetchErr) {
101
+ return res.send(fetchErr);
102
+ }
103
+ }
104
+ }
105
+ );
106
+ } catch (err) {
107
+ return res.send(err);
108
+ }
109
+ });
110
+
111
+ router.get('/v1/fiatrates/:code/', (req, res) => {
112
+ setPublicCache(res, 5 * ONE_MINUTE);
113
+ respondWithPublicServer(req, res, context, server =>
114
+ callbackResult(resolve => {
115
+ server.getFiatRate(
116
+ {
117
+ code: req.params['code'],
118
+ coin: req.query.coin || 'btc',
119
+ ts: req.query.ts ? +req.query.ts : null
120
+ },
121
+ resolve
122
+ );
123
+ })
124
+ );
125
+ });
126
+
127
+ router.get('/v2/fiatrates/:code/', (req, res) => {
128
+ setPublicCache(res, 5 * ONE_MINUTE);
129
+ respondWithPublicServer(req, res, context, server =>
130
+ callbackResult(resolve => {
131
+ server.getHistoricalRates(
132
+ {
133
+ code: req.params['code'],
134
+ ts: req.query.ts ? +req.query.ts : null
135
+ },
136
+ resolve
137
+ );
138
+ })
139
+ );
140
+ });
141
+
142
+ router.get('/v3/fiatrates/', (req, res) => {
143
+ setPublicCache(res, 5 * ONE_MINUTE);
144
+ respondWithPublicServer(req, res, context, server =>
145
+ callbackResult(resolve => {
146
+ server.getFiatRates(
147
+ {
148
+ code: req.query.code || null,
149
+ ts: req.query.ts ? +req.query.ts : null
150
+ },
151
+ resolve
152
+ );
153
+ })
154
+ );
155
+ });
156
+
157
+ router.get('/v3/fiatrates/:coin/', (req, res) => {
158
+ setPublicCache(res, 5 * ONE_MINUTE);
159
+ respondWithPublicServer(req, res, context, server =>
160
+ callbackResult(resolve => {
161
+ server.getFiatRatesByCoin(
162
+ {
163
+ coin: req.params['coin'],
164
+ code: req.query.code || null,
165
+ ts: req.query.ts ? +req.query.ts : null
166
+ },
167
+ resolve
168
+ );
169
+ })
170
+ );
171
+ });
172
+
173
+ router.get('/v4/fiatrates/:code/', (req, res) => {
174
+ setPublicCache(res, 5 * ONE_MINUTE);
175
+ respondWithPublicServer(req, res, context, server => {
176
+ return server.externalServices.coinGecko.coinGeckoGetFiatRates(req);
177
+ });
178
+ });
179
+
180
+ router.get('/v1/services', (req, res) => {
181
+ respondWithPublicServer(req, res, context, server =>
182
+ callbackResult(resolve => {
183
+ server.getServicesData(req.query, resolve);
184
+ })
185
+ );
186
+ });
187
+
188
+ router.post('/v1/service/checkAvailability', (req, res) => {
189
+ respondWithPublicServer(req, res, context, server => {
190
+ return server.checkServiceAvailability(req);
191
+ });
192
+ });
193
+
194
+ router.post('/v1/service/banxa/getCoins', (req, res) => {
195
+ respondWithPublicServer(req, res, context, server => {
196
+ return server.externalServices.banxa.banxaGetCoins(req);
197
+ });
198
+ });
199
+
200
+ router.post('/v1/service/banxa/paymentMethods', (req, res) => {
201
+ respondWithPublicServer(req, res, context, server => {
202
+ return server.externalServices.banxa.banxaGetPaymentMethods(req);
203
+ });
204
+ });
205
+
206
+ router.post('/v1/service/banxa/quote', (req, res) => {
207
+ respondWithAuthServer(req, res, context, server => {
208
+ return server.externalServices.banxa.banxaGetQuote(req);
209
+ });
210
+ });
211
+
212
+ router.post('/v1/service/banxa/createOrder', (req, res) => {
213
+ respondWithAuthServer(req, res, context, server => {
214
+ return server.externalServices.banxa.banxaCreateOrder(req);
215
+ });
216
+ });
217
+
218
+ router.post('/v1/service/banxa/getOrder', (req, res) => {
219
+ respondWithPublicServer(req, res, context, server => {
220
+ return server.externalServices.banxa.banxaGetOrder(req);
221
+ });
222
+ });
223
+
224
+ router.post('/v1/service/moonpay/getCurrencies', (req, res) => {
225
+ respondWithPublicServer(req, res, context, server => {
226
+ return server.externalServices.moonpay.moonpayGetCurrencies(req);
227
+ });
228
+ });
229
+
230
+ router.post('/v1/service/moonpay/quote', (req, res) => {
231
+ respondWithAuthServer(req, res, context, server => {
232
+ return server.externalServices.moonpay.moonpayGetQuote(req);
233
+ });
234
+ });
235
+
236
+ router.post('/v1/service/moonpay/sellQuote', (req, res) => {
237
+ respondWithAuthServer(req, res, context, server => {
238
+ return server.externalServices.moonpay.moonpayGetSellQuote(req);
239
+ });
240
+ });
241
+
242
+ router.post('/v1/service/moonpay/currencyLimits', (req, res) => {
243
+ respondWithPublicServer(req, res, context, server => {
244
+ return server.externalServices.moonpay.moonpayGetCurrencyLimits(req);
245
+ });
246
+ });
247
+
248
+ router.post('/v1/service/moonpay/signedPaymentUrl', (req, res) => {
249
+ respondWithAuthServer(req, res, context, server => {
250
+ return server.externalServices.moonpay.moonpayGetSignedPaymentUrl(req);
251
+ });
252
+ });
253
+
254
+ router.post('/v1/service/moonpay/sellSignedPaymentUrl', (req, res) => {
255
+ respondWithAuthServer(req, res, context, server => {
256
+ return server.externalServices.moonpay.moonpayGetSellSignedPaymentUrl(req);
257
+ });
258
+ });
259
+
260
+ router.post('/v1/service/moonpay/transactionDetails', (req, res) => {
261
+ respondWithPublicServer(req, res, context, server => {
262
+ return server.externalServices.moonpay.moonpayGetTransactionDetails(req);
263
+ });
264
+ });
265
+
266
+ router.post('/v1/service/moonpay/sellTransactionDetails', (req, res) => {
267
+ respondWithPublicServer(req, res, context, server => {
268
+ return server.externalServices.moonpay.moonpayGetSellTransactionDetails(req);
269
+ });
270
+ });
271
+
272
+ router.post('/v1/service/moonpay/cancelSellTransaction', (req, res) => {
273
+ respondWithAuthServer(req, res, context, server => {
274
+ return server.externalServices.moonpay.moonpayCancelSellTransaction(req);
275
+ });
276
+ });
277
+
278
+ router.post('/v1/service/moonpay/accountDetails', (req, res) => {
279
+ respondWithPublicServer(req, res, context, server => {
280
+ return server.externalServices.moonpay.moonpayGetAccountDetails(req);
281
+ });
282
+ });
283
+
284
+ router.post('/v1/service/ramp/quote', (req, res) => {
285
+ respondWithAuthServer(req, res, context, server => {
286
+ return server.externalServices.ramp.rampGetQuote(req);
287
+ });
288
+ });
289
+
290
+ router.post('/v1/service/ramp/sellQuote', (req, res) => {
291
+ respondWithAuthServer(req, res, context, server => {
292
+ return server.externalServices.ramp.rampGetSellQuote(req);
293
+ });
294
+ });
295
+
296
+ router.post('/v1/service/ramp/signedPaymentUrl', (req, res) => {
297
+ respondWithAuthServer(req, res, context, server => {
298
+ return server.externalServices.ramp.rampGetSignedPaymentUrl(req);
299
+ });
300
+ });
301
+
302
+ router.post('/v1/service/ramp/assets', (req, res) => {
303
+ respondWithPublicServer(req, res, context, server => {
304
+ return server.externalServices.ramp.rampGetAssets(req);
305
+ });
306
+ });
307
+
308
+ router.post('/v1/service/ramp/sellTransactionDetails', (req, res) => {
309
+ respondWithPublicServer(req, res, context, server => {
310
+ return server.externalServices.ramp.rampGetSellTransactionDetails(req);
311
+ });
312
+ });
313
+
314
+ router.post('/v1/service/sardine/quote', (req, res) => {
315
+ respondWithAuthServer(req, res, context, server => {
316
+ return server.externalServices.sardine.sardineGetQuote(req);
317
+ });
318
+ });
319
+
320
+ router.post('/v1/service/sardine/getToken', (req, res) => {
321
+ respondWithAuthServer(req, res, context, server => {
322
+ return server.externalServices.sardine.sardineGetToken(req);
323
+ });
324
+ });
325
+
326
+ router.post('/v1/service/sardine/getSupportedTokens', (req, res) => {
327
+ respondWithPublicServer(req, res, context, server => {
328
+ return server.externalServices.sardine.sardineGetSupportedTokens(req);
329
+ });
330
+ });
331
+
332
+ router.post('/v1/service/sardine/currencyLimits', (req, res) => {
333
+ respondWithPublicServer(req, res, context, server => {
334
+ return server.externalServices.sardine.sardineGetCurrencyLimits(req);
335
+ });
336
+ });
337
+
338
+ router.post('/v1/service/sardine/ordersDetails', (req, res) => {
339
+ respondWithPublicServer(req, res, context, server => {
340
+ return server.externalServices.sardine.sardineGetOrdersDetails(req);
341
+ });
342
+ });
343
+
344
+ router.post('/v1/service/simplex/getCurrencies', (req, res) => {
345
+ respondWithPublicServer(req, res, context, server => {
346
+ return server.externalServices.simplex.simplexGetCurrencies(req);
347
+ });
348
+ });
349
+
350
+ router.post('/v1/service/simplex/quote', (req, res) => {
351
+ respondWithAuthServer(req, res, context, server => {
352
+ return server.externalServices.simplex.simplexGetQuote(req);
353
+ });
354
+ });
355
+
356
+ router.post('/v1/service/simplex/sellQuote', (req, res) => {
357
+ respondWithAuthServer(req, res, context, server => {
358
+ return server.externalServices.simplex.simplexGetSellQuote(req);
359
+ });
360
+ });
361
+
362
+ router.post('/v1/service/simplex/paymentRequest', (req, res) => {
363
+ respondWithAuthServer(req, res, context, server => {
364
+ return server.externalServices.simplex.simplexPaymentRequest(req);
365
+ });
366
+ });
367
+
368
+ router.post('/v1/service/simplex/sellPaymentRequest', (req, res) => {
369
+ respondWithAuthServer(req, res, context, server => {
370
+ return server.externalServices.simplex.simplexSellPaymentRequest(req);
371
+ });
372
+ });
373
+
374
+ router.get('/v1/service/simplex/events', (req, res) => {
375
+ getServerWithAuth(req, res, server => {
376
+ Promise.resolve()
377
+ .then(() => server.externalServices.simplex.simplexGetEvents({ env: req.query.env }))
378
+ .then(response => {
379
+ res.json(response);
380
+ })
381
+ .catch(err => {
382
+ returnError(err ?? 'unknown', res, req);
383
+ });
384
+ });
385
+ });
386
+
387
+ router.post('/v1/service/thorswap/supportedChains', (req, res) => {
388
+ respondWithPublicServer(req, res, context, server => {
389
+ return server.externalServices.thorswap.thorswapGetSupportedChains(req);
390
+ });
391
+ });
392
+
393
+ router.post('/v1/service/thorswap/cryptoCurrencies', (req, res) => {
394
+ respondWithPublicServer(req, res, context, server => {
395
+ return server.externalServices.thorswap.thorswapGetCryptoCurrencies(req);
396
+ });
397
+ });
398
+
399
+ router.post('/v1/service/thorswap/getSwapQuote', (req, res) => {
400
+ respondWithAuthServer(req, res, context, server => {
401
+ return server.externalServices.thorswap.thorswapGetSwapQuote(req);
402
+ });
403
+ });
404
+
405
+ router.post('/v1/service/thorswap/getSwapTx', (req, res) => {
406
+ respondWithPublicServer(req, res, context, server => {
407
+ return server.externalServices.thorswap.thorswapGetSwapTx(req);
408
+ });
409
+ });
410
+
411
+ router.post('/v1/service/transak/getAccessToken', (req, res) => {
412
+ respondWithAuthServer(req, res, context, server => {
413
+ return server.externalServices.transak.transakGetAccessToken(req);
414
+ });
415
+ });
416
+
417
+ router.post('/v1/service/transak/cryptoCurrencies', (req, res) => {
418
+ respondWithPublicServer(req, res, context, server => {
419
+ return server.externalServices.transak.transakGetCryptoCurrencies(req);
420
+ });
421
+ });
422
+
423
+ router.post('/v1/service/transak/fiatCurrencies', (req, res) => {
424
+ respondWithPublicServer(req, res, context, server => {
425
+ return server.externalServices.transak.transakGetFiatCurrencies(req);
426
+ });
427
+ });
428
+
429
+ router.post('/v1/service/transak/quote', (req, res) => {
430
+ respondWithAuthServer(req, res, context, server => {
431
+ return server.externalServices.transak.transakGetQuote(req);
432
+ });
433
+ });
434
+
435
+ router.post('/v1/service/transak/signedPaymentUrl', (req, res) => {
436
+ respondWithAuthServer(req, res, context, server => {
437
+ return server.externalServices.transak.transakGetSignedPaymentUrl(req);
438
+ });
439
+ });
440
+
441
+ router.post('/v1/service/transak/orderDetails', (req, res) => {
442
+ respondWithPublicServer(req, res, context, server => {
443
+ return server.externalServices.transak.transakGetOrderDetails(req);
444
+ });
445
+ });
446
+
447
+ router.post('/v1/service/wyre/walletOrderQuotation', (req, res) => {
448
+ respondWithAuthServer(req, res, context, server => {
449
+ return server.externalServices.wyre.wyreWalletOrderQuotation(req);
450
+ });
451
+ });
452
+
453
+ router.post('/v1/service/wyre/walletOrderReservation', (req, res) => {
454
+ respondWithAuthServer(req, res, context, server => {
455
+ return server.externalServices.wyre.wyreWalletOrderReservation(req);
456
+ });
457
+ });
458
+
459
+ router.post('/v1/service/changelly/getCurrencies', (req, res) => {
460
+ respondWithPublicServer(req, res, context, server => {
461
+ return server.externalServices.changelly.changellyGetCurrencies(req);
462
+ });
463
+ });
464
+
465
+ router.post('/v1/service/changelly/getPairsParams', (req, res) => {
466
+ respondWithAuthServer(req, res, context, server => {
467
+ return server.externalServices.changelly.changellyGetPairsParams(req);
468
+ });
469
+ });
470
+
471
+ router.post('/v1/service/changelly/getFixRateForAmount', (req, res) => {
472
+ respondWithAuthServer(req, res, context, server => {
473
+ return server.externalServices.changelly.changellyGetFixRateForAmount(req);
474
+ });
475
+ });
476
+
477
+ router.post('/v1/service/changelly/createFixTransaction', (req, res) => {
478
+ respondWithAuthServer(req, res, context, server => {
479
+ return server.externalServices.changelly.changellyCreateFixTransaction(req);
480
+ });
481
+ });
482
+
483
+ router.post('/v1/service/changelly/getTransactions', (req, res) => {
484
+ respondWithPublicServer(req, res, context, server => {
485
+ return server.externalServices.changelly.changellyGetTransactions(req);
486
+ });
487
+ });
488
+
489
+ router.post('/v1/service/changelly/getStatus', (req, res) => {
490
+ respondWithPublicServer(req, res, context, server => {
491
+ return server.externalServices.changelly.changellyGetStatus(req);
492
+ });
493
+ });
494
+
495
+ router.get('/v1/service/oneInch/getReferrerFee', (req, res) => {
496
+ respondWithPublicServer(req, res, context, server => {
497
+ return server.externalServices.oneInch.oneInchGetReferrerFee(req);
498
+ });
499
+ });
500
+
501
+ router.post('/v1/service/oneInch/getSwap/:chain?', (req, res) => {
502
+ respondWithAuthServer(req, res, context, server => {
503
+ return server.externalServices.oneInch.oneInchGetSwap(req);
504
+ });
505
+ });
506
+
507
+ router.get('/v1/service/oneInch/getTokens/:chain?', (req, res) => {
508
+ setPublicCache(res, 1 * ONE_MINUTE);
509
+ respondWithPublicServer(req, res, context, server => {
510
+ return server.externalServices.coinGecko.coinGeckoGetTokens(req);
511
+ });
512
+ });
513
+
514
+ router.get('/v1/marketstats/:code/', (req, res) => {
515
+ setPublicCache(res, 5 * ONE_MINUTE);
516
+ respondWithPublicServer(req, res, context, server => {
517
+ return server.externalServices.coinGecko.coinGeckoGetMarketStats(req);
518
+ });
519
+ });
520
+
521
+ router.get('/v1/services/dex/getSpenderApprovalWhitelist', (req, res) => {
522
+ respondWithPublicServer(req, res, context, server =>
523
+ callbackResult(resolve => {
524
+ server.getSpenderApprovalWhitelist(resolve);
525
+ })
526
+ );
527
+ });
528
+ }