aboutsummaryrefslogtreecommitdiffstats
path: root/packages/connect/src/utils/relayer_response_json_parsers.ts
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2017-12-20 06:22:38 +0800
committerBrandon Millman <brandon.millman@gmail.com>2017-12-25 10:01:28 +0800
commit8fe81c9d090ce50496f3150602f19433e7aedd1e (patch)
tree7e569cf16cd3a9ad9b09b5e64c5101d0c477f8fe /packages/connect/src/utils/relayer_response_json_parsers.ts
parent9f3acf8e2888b6105062e47664ecd5adaaf3c889 (diff)
downloaddexon-sol-tools-8fe81c9d090ce50496f3150602f19433e7aedd1e.tar
dexon-sol-tools-8fe81c9d090ce50496f3150602f19433e7aedd1e.tar.gz
dexon-sol-tools-8fe81c9d090ce50496f3150602f19433e7aedd1e.tar.bz2
dexon-sol-tools-8fe81c9d090ce50496f3150602f19433e7aedd1e.tar.lz
dexon-sol-tools-8fe81c9d090ce50496f3150602f19433e7aedd1e.tar.xz
dexon-sol-tools-8fe81c9d090ce50496f3150602f19433e7aedd1e.tar.zst
dexon-sol-tools-8fe81c9d090ce50496f3150602f19433e7aedd1e.zip
Refactor JSON parsing in HttpClient
Diffstat (limited to 'packages/connect/src/utils/relayer_response_json_parsers.ts')
-rw-r--r--packages/connect/src/utils/relayer_response_json_parsers.ts42
1 files changed, 42 insertions, 0 deletions
diff --git a/packages/connect/src/utils/relayer_response_json_parsers.ts b/packages/connect/src/utils/relayer_response_json_parsers.ts
new file mode 100644
index 000000000..02d88f26d
--- /dev/null
+++ b/packages/connect/src/utils/relayer_response_json_parsers.ts
@@ -0,0 +1,42 @@
+import {assert} from '@0xproject/assert';
+import {schemas} from '@0xproject/json-schemas';
+import * as _ from 'lodash';
+
+import {
+ FeesResponse,
+ OrderbookResponse,
+ SignedOrder,
+ TokenPairsItem,
+} from '../types';
+
+import {typeConverters} from './type_converters';
+
+export const relayerResponseJsonParsers = {
+ parseTokenPairsJson(json: any): TokenPairsItem[] {
+ assert.doesConformToSchema('tokenPairs', json, schemas.relayerApiTokenPairsResponseSchema);
+ return json.map((tokenPair: any) => {
+ return typeConverters.convertStringsFieldsToBigNumbers(tokenPair, [
+ 'tokenA.minAmount',
+ 'tokenA.maxAmount',
+ 'tokenB.minAmount',
+ 'tokenB.maxAmount',
+ ]);
+ });
+ },
+ parseOrdersJson(json: any): SignedOrder[] {
+ assert.doesConformToSchema('orders', json, schemas.signedOrdersSchema);
+ return json.map((order: object) => typeConverters.convertOrderStringFieldsToBigNumber(order));
+ },
+ parseOrderJson(json: any): SignedOrder {
+ assert.doesConformToSchema('order', json, schemas.signedOrderSchema);
+ return typeConverters.convertOrderStringFieldsToBigNumber(json);
+ },
+ parseOrderbookResponseJson(json: any): OrderbookResponse {
+ assert.doesConformToSchema('orderBook', json, schemas.relayerApiOrderBookResponseSchema);
+ return typeConverters.convertOrderbookStringFieldsToBigNumber(json);
+ },
+ parseFeesResponseJson(json: any): FeesResponse {
+ assert.doesConformToSchema('fees', json, schemas.relayerApiFeesResponseSchema);
+ return typeConverters.convertStringsFieldsToBigNumbers(json, ['makerFee', 'takerFee']);
+ },
+};