aboutsummaryrefslogtreecommitdiffstats
path: root/packages/testnet-faucets/src/ts/parameter_extractor.ts
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-01-27 01:40:42 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-01-31 03:36:39 +0800
commit44162811bd57afb89e5d052a2d9db25007cc1463 (patch)
tree44a02e5ec79a097ce2105eef04ab6accddd5d1f4 /packages/testnet-faucets/src/ts/parameter_extractor.ts
parent2bcb7d56394c43acd68d1823092de2ad047abc6d (diff)
downloaddexon-sol-tools-44162811bd57afb89e5d052a2d9db25007cc1463.tar
dexon-sol-tools-44162811bd57afb89e5d052a2d9db25007cc1463.tar.gz
dexon-sol-tools-44162811bd57afb89e5d052a2d9db25007cc1463.tar.bz2
dexon-sol-tools-44162811bd57afb89e5d052a2d9db25007cc1463.tar.lz
dexon-sol-tools-44162811bd57afb89e5d052a2d9db25007cc1463.tar.xz
dexon-sol-tools-44162811bd57afb89e5d052a2d9db25007cc1463.tar.zst
dexon-sol-tools-44162811bd57afb89e5d052a2d9db25007cc1463.zip
Add order signing and dispensing ability to faucet
Diffstat (limited to 'packages/testnet-faucets/src/ts/parameter_extractor.ts')
-rw-r--r--packages/testnet-faucets/src/ts/parameter_extractor.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/packages/testnet-faucets/src/ts/parameter_extractor.ts b/packages/testnet-faucets/src/ts/parameter_extractor.ts
new file mode 100644
index 000000000..f3a26ae01
--- /dev/null
+++ b/packages/testnet-faucets/src/ts/parameter_extractor.ts
@@ -0,0 +1,34 @@
+import { addressUtils } from '@0xproject/utils';
+import { NextFunction, Request, Response } from 'express';
+import * as _ from 'lodash';
+
+import { configs } from './configs';
+import { rpcUrls } from './rpc_urls';
+import { utils } from './utils';
+
+const DEFAULT_NETWORK_ID = 42; // kovan
+
+export const parameterExtractor = {
+ extract(req: Request, res: Response, next: NextFunction) {
+ const recipientAddress = req.params.recipient;
+ if (_.isUndefined(recipientAddress) || !_isValidEthereumAddress(recipientAddress)) {
+ res.status(400).send('INVALID_RECIPIENT_ADDRESS');
+ return;
+ }
+ const lowerCaseRecipientAddress = recipientAddress.toLowerCase();
+ req.recipientAddress = lowerCaseRecipientAddress;
+ const networkId = _.get(req.query, 'networkId', DEFAULT_NETWORK_ID);
+ const rpcUrl = _.get(rpcUrls, networkId);
+ if (_.isUndefined(rpcUrl)) {
+ res.status(400).send('UNSUPPORTED_NETWORK_ID');
+ return;
+ }
+ req.networkId = networkId;
+ next();
+ },
+};
+
+function _isValidEthereumAddress(address: string): boolean {
+ const lowercaseAddress = address.toLowerCase();
+ return addressUtils.isAddress(lowercaseAddress);
+}