From 79f36cf6fba8c2e35badf0b415ddf6b01d9c8f9e Mon Sep 17 00:00:00 2001 From: Daniel Pyrathon Date: Tue, 14 Sep 2021 14:43:02 -0400 Subject: [PATCH] fix: Remove API key whitelist field (#323) * Refactor integrator ID and add Prometheus metrics * Update packages/asset-swapper/src/swap_quoter.ts Co-authored-by: David Walsh <5778036+rhinodavid@users.noreply.github.com> * Update packages/asset-swapper/src/swap_quoter.ts Co-authored-by: David Walsh <5778036+rhinodavid@users.noreply.github.com> * Update packages/asset-swapper/src/swap_quoter.ts Co-authored-by: David Walsh <5778036+rhinodavid@users.noreply.github.com> * Added documentation and fixed some minor requests * Added more metrics * more docs * lint fix * added new Integrator ID addition * refactor tests * Refactor new types Co-authored-by: David Walsh <5778036+rhinodavid@users.noreply.github.com> --- packages/asset-swapper/src/types.ts | 2 +- packages/asset-swapper/src/utils/quote_requestor.ts | 6 +++--- packages/asset-swapper/test/quote_requestor_test.ts | 6 +++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/asset-swapper/src/types.ts b/packages/asset-swapper/src/types.ts index 3fe26ed682..d7d250c19e 100644 --- a/packages/asset-swapper/src/types.ts +++ b/packages/asset-swapper/src/types.ts @@ -244,7 +244,6 @@ export interface RfqRequestOpts { takerAddress: string; txOrigin: string; integrator: Integrator; - apiKeyWhitelist?: string[]; intentOnFilling: boolean; isIndicative?: boolean; makerEndpointMaxResponseTimeMs?: number; @@ -297,6 +296,7 @@ export interface RfqFirmQuoteValidator { export interface Integrator { integratorId: string; label: string; + whitelistIntegratorUrls?: string[]; } export interface SwapQuoterRfqOpts { diff --git a/packages/asset-swapper/src/utils/quote_requestor.ts b/packages/asset-swapper/src/utils/quote_requestor.ts index d8ff711d16..d203670ad9 100644 --- a/packages/asset-swapper/src/utils/quote_requestor.ts +++ b/packages/asset-swapper/src/utils/quote_requestor.ts @@ -214,7 +214,7 @@ export class QuoteRequestor { * @returns a list of TypedMakerUrl instances */ public static getTypedMakerUrlsAndWhitelist( - options: Pick, + options: Pick, assetOfferings: RfqMakerAssetOfferings, ): TypedMakerUrl[] { const standardUrls = Object.keys(assetOfferings).map( @@ -233,8 +233,8 @@ export class QuoteRequestor { let typedMakerUrls = standardUrls.concat(altUrls); // If there is a whitelist, only allow approved maker URLs - if (options.apiKeyWhitelist !== undefined) { - const whitelist = new Set(options.apiKeyWhitelist.map(key => key.toLowerCase())); + if (options.integrator.whitelistIntegratorUrls !== undefined) { + const whitelist = new Set(options.integrator.whitelistIntegratorUrls.map(key => key.toLowerCase())); typedMakerUrls = typedMakerUrls.filter(makerUrl => whitelist.has(makerUrl.url.toLowerCase())); } return typedMakerUrls; diff --git a/packages/asset-swapper/test/quote_requestor_test.ts b/packages/asset-swapper/test/quote_requestor_test.ts index 52dae72c4e..41abba200e 100644 --- a/packages/asset-swapper/test/quote_requestor_test.ts +++ b/packages/asset-swapper/test/quote_requestor_test.ts @@ -862,7 +862,11 @@ describe('QuoteRequestor', async () => { const [apiKeyWhitelist, results] = test; const response = QuoteRequestor.getTypedMakerUrlsAndWhitelist( { - apiKeyWhitelist, + integrator: { + integratorId: 'foo', + label: 'bar', + whitelistIntegratorUrls: apiKeyWhitelist, + }, altRfqAssetOfferings: {}, }, {