Merge pull request #2609 from 0xProject/feature/quote-requestor-strings

Quote Requestor Fix:  BigNumbers to Strings
This commit is contained in:
Daniel Pyrathon
2020-06-19 15:40:58 -07:00
committed by GitHub
2 changed files with 20 additions and 8 deletions

View File

@@ -284,10 +284,23 @@ export class QuoteRequestor {
const responsesIfDefined: Array<undefined | AxiosResponse<ResponseT>> = await Promise.all( const responsesIfDefined: Array<undefined | AxiosResponse<ResponseT>> = await Promise.all(
Object.keys(this._rfqtAssetOfferings).map(async url => { Object.keys(this._rfqtAssetOfferings).map(async url => {
if (this._makerSupportsPair(url, makerAssetData, takerAssetData)) { if (this._makerSupportsPair(url, makerAssetData, takerAssetData)) {
const requestParams = { const requestParamsWithBigNumbers = {
takerAddress: options.takerAddress, takerAddress: options.takerAddress,
...inferQueryParams(marketOperation, makerAssetData, takerAssetData, assetFillAmount), ...inferQueryParams(marketOperation, makerAssetData, takerAssetData, assetFillAmount),
}; };
// convert BigNumbers to strings
// so they are digestible by axios
const requestParams = {
...requestParamsWithBigNumbers,
sellAmountBaseUnits: requestParamsWithBigNumbers.sellAmountBaseUnits
? requestParamsWithBigNumbers.sellAmountBaseUnits.toString()
: undefined,
buyAmountBaseUnits: requestParamsWithBigNumbers.buyAmountBaseUnits
? requestParamsWithBigNumbers.buyAmountBaseUnits.toString()
: undefined,
};
const partialLogEntry = { url, quoteType, requestParams }; const partialLogEntry = { url, quoteType, requestParams };
const timeBeforeAwait = Date.now(); const timeBeforeAwait = Date.now();
try { try {

View File

@@ -1,6 +1,5 @@
import { tokenUtils } from '@0x/dev-utils'; import { tokenUtils } from '@0x/dev-utils';
import { assetDataUtils } from '@0x/order-utils'; import { assetDataUtils } from '@0x/order-utils';
import { TakerRequest } from '@0x/quote-server';
import { StatusCodes } from '@0x/types'; import { StatusCodes } from '@0x/types';
import { BigNumber } from '@0x/utils'; import { BigNumber } from '@0x/utils';
import * as chai from 'chai'; import * as chai from 'chai';
@@ -36,10 +35,10 @@ describe('QuoteRequestor', async () => {
// Set up RFQT responses // Set up RFQT responses
// tslint:disable-next-line:array-type // tslint:disable-next-line:array-type
const mockedRequests: MockedRfqtFirmQuoteResponse[] = []; const mockedRequests: MockedRfqtFirmQuoteResponse[] = [];
const expectedParams: TakerRequest = { const expectedParams = {
sellTokenAddress: takerToken, sellTokenAddress: takerToken,
buyTokenAddress: makerToken, buyTokenAddress: makerToken,
sellAmountBaseUnits: new BigNumber('10000'), sellAmountBaseUnits: '10000',
buyAmountBaseUnits: undefined, buyAmountBaseUnits: undefined,
takerAddress, takerAddress,
}; };
@@ -193,10 +192,10 @@ describe('QuoteRequestor', async () => {
// Set up RFQT responses // Set up RFQT responses
// tslint:disable-next-line:array-type // tslint:disable-next-line:array-type
const mockedRequests: MockedRfqtIndicativeQuoteResponse[] = []; const mockedRequests: MockedRfqtIndicativeQuoteResponse[] = [];
const expectedParams: TakerRequest = { const expectedParams = {
sellTokenAddress: takerToken, sellTokenAddress: takerToken,
buyTokenAddress: makerToken, buyTokenAddress: makerToken,
sellAmountBaseUnits: new BigNumber('10000'), sellAmountBaseUnits: '10000',
buyAmountBaseUnits: undefined, buyAmountBaseUnits: undefined,
takerAddress, takerAddress,
}; };
@@ -287,10 +286,10 @@ describe('QuoteRequestor', async () => {
// Set up RFQT responses // Set up RFQT responses
// tslint:disable-next-line:array-type // tslint:disable-next-line:array-type
const mockedRequests: MockedRfqtIndicativeQuoteResponse[] = []; const mockedRequests: MockedRfqtIndicativeQuoteResponse[] = [];
const expectedParams: TakerRequest = { const expectedParams = {
sellTokenAddress: takerToken, sellTokenAddress: takerToken,
buyTokenAddress: makerToken, buyTokenAddress: makerToken,
buyAmountBaseUnits: new BigNumber('10000'), buyAmountBaseUnits: '10000',
sellAmountBaseUnits: undefined, sellAmountBaseUnits: undefined,
takerAddress, takerAddress,
}; };