diff options
author | Francesco Agosti <francesco.agosti93@gmail.com> | 2018-08-23 06:39:14 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-23 06:39:14 +0800 |
commit | cb19623a3aaf22a386bd4a7d6477048a604be9a2 (patch) | |
tree | 4d9512006aac8828e6311dc1f60707c654451469 /packages/connect/src/utils/type_converters.ts | |
parent | e915d72202f66155e74e22cf7df66d37e726f38f (diff) | |
parent | c83f2a070cd5464af99785692efa82ba6f415a41 (diff) | |
download | dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.gz dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.bz2 dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.lz dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.xz dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.zst dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.zip |
Merge pull request #974 from 0xProject/feature/connect/sra-api-v2
[connect][sra-api][json-schemas] Update Connect to SRA v2
Diffstat (limited to 'packages/connect/src/utils/type_converters.ts')
-rw-r--r-- | packages/connect/src/utils/type_converters.ts | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/packages/connect/src/utils/type_converters.ts b/packages/connect/src/utils/type_converters.ts index 210d452b9..4b211a0b2 100644 --- a/packages/connect/src/utils/type_converters.ts +++ b/packages/connect/src/utils/type_converters.ts @@ -1,29 +1,47 @@ import { BigNumber } from '@0xproject/utils'; import * as _ from 'lodash'; +import { APIOrder } from '../types'; + export const typeConverters = { convertOrderbookStringFieldsToBigNumber(orderbook: any): any { const bids = _.get(orderbook, 'bids', []); const asks = _.get(orderbook, 'asks', []); + const convertedBids = { + ...bids, + records: bids.records.map((order: any) => typeConverters.convertAPIOrderStringFieldsToBigNumber(order)), + }; + const convertedAsks = { + ...asks, + records: asks.records.map((order: any) => typeConverters.convertAPIOrderStringFieldsToBigNumber(order)), + }; return { - bids: bids.map((order: any) => typeConverters.convertOrderStringFieldsToBigNumber(order)), - asks: asks.map((order: any) => typeConverters.convertOrderStringFieldsToBigNumber(order)), + bids: convertedBids, + asks: convertedAsks, }; }, + convertAPIOrderStringFieldsToBigNumber(apiOrder: any): APIOrder { + return { ...apiOrder, order: typeConverters.convertOrderStringFieldsToBigNumber(apiOrder.order) }; + }, convertOrderStringFieldsToBigNumber(order: any): any { return typeConverters.convertStringsFieldsToBigNumbers(order, [ - 'makerTokenAmount', - 'takerTokenAmount', + 'makerAssetAmount', + 'takerAssetAmount', 'makerFee', 'takerFee', - 'expirationUnixTimestampSec', + 'expirationTimeSeconds', 'salt', ]); }, convertStringsFieldsToBigNumbers(obj: any, fields: string[]): any { const result = _.assign({}, obj); _.each(fields, field => { - _.update(result, field, (value: string) => new BigNumber(value)); + _.update(result, field, (value: string) => { + if (_.isUndefined(value)) { + throw new Error(`Could not find field '${field}' while converting string fields to BigNumber.`); + } + return new BigNumber(value); + }); }); return result; }, |