Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function handleV2CoinSpecificREST(req: express.Request, res: express.Response, next: express.NextFunction) {
const method = req.method;
const bitgo = req.bitgo;
try {
const coin = bitgo.coin(req.params.coin);
const coinURL = coin.url(createAPIPath(req));
return redirectRequest(bitgo, method, coinURL, req, next);
} catch (e) {
if (e instanceof Errors.UnsupportedCoinError) {
const queryParams = _.transform(
req.query,
(acc: string[], value, key) => {
for (const val of _.castArray(value)) {
acc.push(`${key}=${val}`);
}
},
[]
);
const baseUrl = bitgo.url(req.baseUrl.replace(/^\/api\/v2/, ''), 2);
const url = _.isEmpty(queryParams) ? baseUrl : `${baseUrl}?${queryParams.join('&')}`;
debug(`coin ${req.params.coin} not supported, attempting to handle as a coinless route with url ${url}`);
return redirectRequest(bitgo, method, url, req, next);
}