diff options
author | Brandon Millman <brandon.millman@gmail.com> | 2017-12-20 06:22:38 +0800 |
---|---|---|
committer | Brandon Millman <brandon.millman@gmail.com> | 2017-12-25 10:01:28 +0800 |
commit | 8fe81c9d090ce50496f3150602f19433e7aedd1e (patch) | |
tree | 7e569cf16cd3a9ad9b09b5e64c5101d0c477f8fe /packages/connect/src/utils/relayer_response_json_parsers.ts | |
parent | 9f3acf8e2888b6105062e47664ecd5adaaf3c889 (diff) | |
download | dexon-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.ts | 42 |
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']); + }, +}; |