From 8cdc05f58269c9a52368f649804c3891daee1402 Mon Sep 17 00:00:00 2001 From: "F. Eugene Aumson" Date: Thu, 9 Apr 2020 16:18:09 -0400 Subject: [PATCH] Promote max maker response time to a global option --- packages/asset-swapper/src/constants.ts | 6 ++++++ packages/asset-swapper/src/index.ts | 1 + packages/asset-swapper/src/types.ts | 4 ++++ packages/asset-swapper/src/utils/quote_requestor.ts | 7 +++++-- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/asset-swapper/src/constants.ts b/packages/asset-swapper/src/constants.ts index 0d227e2319..cadd6d03f2 100644 --- a/packages/asset-swapper/src/constants.ts +++ b/packages/asset-swapper/src/constants.ts @@ -5,6 +5,7 @@ import { ForwarderExtensionContractOpts, OrderPrunerOpts, OrderPrunerPermittedFeeTypes, + RfqtFirmQuoteRequestOpts, SwapQuoteExecutionOpts, SwapQuoteGetOutputOpts, SwapQuoteRequestOpts, @@ -65,6 +66,10 @@ const DEFAULT_SWAP_QUOTE_REQUEST_OPTS: SwapQuoteRequestOpts = { ...DEFAULT_GET_MARKET_ORDERS_OPTS, }; +const DEFAULT_RFQT_FIRM_QUOTE_REQUEST_OPTS: RfqtFirmQuoteRequestOpts = { + makerEndpointMaxResponseTimeMs: 1000, +}; + export const constants = { ETH_GAS_STATION_API_BASE_URL, PROTOCOL_FEE_MULTIPLIER, @@ -81,6 +86,7 @@ export const constants = { DEFAULT_FORWARDER_SWAP_QUOTE_EXECUTE_OPTS, DEFAULT_SWAP_QUOTE_REQUEST_OPTS, DEFAULT_PER_PAGE, + DEFAULT_RFQT_FIRM_QUOTE_REQUEST_OPTS, NULL_ERC20_ASSET_DATA, PROTOCOL_FEE_UTILS_POLLING_INTERVAL_IN_MS, MARKET_UTILS_AMOUNT_BUFFER_PERCENTAGE, diff --git a/packages/asset-swapper/src/index.ts b/packages/asset-swapper/src/index.ts index b384af6fe5..87de97ae35 100644 --- a/packages/asset-swapper/src/index.ts +++ b/packages/asset-swapper/src/index.ts @@ -44,6 +44,7 @@ export { MarketBuySwapQuote, MarketOperation, MarketSellSwapQuote, + RfqtFirmQuoteRequestOpts, SwapQuote, SwapQuoteConsumerBase, SwapQuoteConsumerOpts, diff --git a/packages/asset-swapper/src/types.ts b/packages/asset-swapper/src/types.ts index 4e244f2a8f..10480cb277 100644 --- a/packages/asset-swapper/src/types.ts +++ b/packages/asset-swapper/src/types.ts @@ -273,3 +273,7 @@ export enum OrderPrunerPermittedFeeTypes { MakerDenominatedTakerFee = 'MAKER_DENOMINATED_TAKER_FEE', TakerDenominatedTakerFee = 'TAKER_DENOMINATED_TAKER_FEE', } + +export interface RfqtFirmQuoteRequestOpts { + makerEndpointMaxResponseTimeMs?: number; +} diff --git a/packages/asset-swapper/src/utils/quote_requestor.ts b/packages/asset-swapper/src/utils/quote_requestor.ts index db1d3d3dab..2840fbd70f 100644 --- a/packages/asset-swapper/src/utils/quote_requestor.ts +++ b/packages/asset-swapper/src/utils/quote_requestor.ts @@ -2,8 +2,10 @@ import { assetDataUtils, SignedOrder } from '@0x/order-utils'; import { ERC20AssetData } from '@0x/types'; import { BigNumber, logUtils } from '@0x/utils'; import Axios, { AxiosResponse } from 'axios'; +import * as _ from 'lodash'; -import { MarketOperation } from '../types'; +import { constants } from '../constants'; +import { MarketOperation, RfqtFirmQuoteRequestOpts } from '../types'; /** * Request quotes from RFQ-T providers @@ -22,8 +24,9 @@ export class QuoteRequestor { marketOperation: MarketOperation, takerApiKey: string, takerAddress: string, + options?: Partial, ): Promise { - const makerEndpointMaxResponseTimeMs = 1000; + const { makerEndpointMaxResponseTimeMs } = _.merge({}, constants.DEFAULT_RFQT_FIRM_QUOTE_REQUEST_OPTS, options); const getTokenAddressOrThrow = (assetData: string): string => { const decodedAssetData = assetDataUtils.decodeAssetDataOrThrow(assetData);