From 88d17523a6316daa6d475501b4098280e5a86b13 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 13 Feb 2025 17:07:32 +0300 Subject: [PATCH] feat: allow pass a version for orders queries (#129) --- src/api/fusion-api.ts | 11 +++++++---- src/api/index.ts | 1 + src/api/orders/order-api.spec.ts | 2 +- src/api/orders/orders.api.ts | 14 ++++++++------ src/api/ordersVersion.ts | 5 +++++ src/api/params.ts | 12 +++++++----- src/api/version.ts | 1 - 7 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 src/api/ordersVersion.ts delete mode 100644 src/api/version.ts diff --git a/src/api/fusion-api.ts b/src/api/fusion-api.ts index 23956dc..d63027e 100644 --- a/src/api/fusion-api.ts +++ b/src/api/fusion-api.ts @@ -15,6 +15,7 @@ import { OrderStatusResponse, OrdersByMakerResponse } from './orders' +import {OrdersVersion} from './ordersVersion' import {AxiosProviderConnector} from '../connector' export class FusionApi { @@ -76,9 +77,10 @@ export class FusionApi { } getActiveOrders( - params: ActiveOrdersRequest = ActiveOrdersRequest.new() + params: ActiveOrdersRequest = ActiveOrdersRequest.new(), + ordersVersion = OrdersVersion._2_1 ): Promise { - return this.ordersApi.getActiveOrders(params) + return this.ordersApi.getActiveOrders(params, ordersVersion) } getOrderStatus(params: OrderStatusRequest): Promise { @@ -86,9 +88,10 @@ export class FusionApi { } getOrdersByMaker( - params: OrdersByMakerRequest + params: OrdersByMakerRequest, + ordersVersion = OrdersVersion._2_1 ): Promise { - return this.ordersApi.getOrdersByMaker(params) + return this.ordersApi.getOrdersByMaker(params, ordersVersion) } submitOrder(params: RelayerRequest): Promise { diff --git a/src/api/index.ts b/src/api/index.ts index d7fe75f..883acd1 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -5,3 +5,4 @@ export * from './orders/index' export * from './fusion-api' export * from './pagination' export * from './types' +export * from './ordersVersion' diff --git a/src/api/orders/order-api.spec.ts b/src/api/orders/order-api.spec.ts index ebfaec6..3cdc3a0 100644 --- a/src/api/orders/order-api.spec.ts +++ b/src/api/orders/order-api.spec.ts @@ -255,7 +255,7 @@ describe(__filename, () => { expect(response).toEqual(expected) expect(httpProvider.get).toHaveBeenLastCalledWith( - `${url}/orders/v2.0/1/order/status/${orderHash}?version=2.1` + `${url}/orders/v2.0/1/order/status/${orderHash}` ) }) diff --git a/src/api/orders/orders.api.ts b/src/api/orders/orders.api.ts index ca63eed..f0294e9 100644 --- a/src/api/orders/orders.api.ts +++ b/src/api/orders/orders.api.ts @@ -11,7 +11,7 @@ import { } from './types' import {AxiosProviderConnector, HttpProviderConnector} from '../../connector' import {concatQueryParams} from '../params' -import {VERSION} from '../version' +import {OrdersVersion} from '../ordersVersion' export class OrdersApi { private static Version = 'v2.0' @@ -31,7 +31,8 @@ export class OrdersApi { } async getActiveOrders( - params: ActiveOrdersRequest + params: ActiveOrdersRequest, + ordersVersion: OrdersVersion ): Promise { const err = params.validate() @@ -39,7 +40,7 @@ export class OrdersApi { throw new Error(err) } - const queryParams = concatQueryParams(params.build(), true) + const queryParams = concatQueryParams(params.build(), ordersVersion) const url = `${this.config.url}/${OrdersApi.Version}/${this.config.network}/order/active/${queryParams}` return this.httpClient.get(url) @@ -54,13 +55,14 @@ export class OrdersApi { throw new Error(err) } - const url = `${this.config.url}/${OrdersApi.Version}/${this.config.network}/order/status/${params.orderHash}?version=${VERSION}` + const url = `${this.config.url}/${OrdersApi.Version}/${this.config.network}/order/status/${params.orderHash}` return this.httpClient.get(url) } async getOrdersByMaker( - params: OrdersByMakerRequest + params: OrdersByMakerRequest, + ordersVersion: OrdersVersion ): Promise { const err = params.validate() @@ -68,7 +70,7 @@ export class OrdersApi { throw new Error(err) } - const qp = concatQueryParams(params.buildQueryParams(), true) + const qp = concatQueryParams(params.buildQueryParams(), ordersVersion) const url = `${this.config.url}/${OrdersApi.Version}/${this.config.network}/order/maker/${params.address}/${qp}` return this.httpClient.get(url) diff --git a/src/api/ordersVersion.ts b/src/api/ordersVersion.ts new file mode 100644 index 0000000..6c909e3 --- /dev/null +++ b/src/api/ordersVersion.ts @@ -0,0 +1,5 @@ +export enum OrdersVersion { + all = 'all', + _2_1 = '2.1', + _2_0 = '2.0' +} diff --git a/src/api/params.ts b/src/api/params.ts index 90c1e38..397f108 100644 --- a/src/api/params.ts +++ b/src/api/params.ts @@ -1,17 +1,19 @@ -import {VERSION} from './version' +import {OrdersVersion} from './ordersVersion' /** * Concat all params to query encoded string. if `addVersion` is true, then `version` param is added to this string */ export function concatQueryParams< T extends Record ->(params: T, addVersion: boolean = false): string { +>(params: T, version: false | OrdersVersion = false): string { + const versionRequired = version && version !== OrdersVersion.all + if (!params) { - return addVersion ? `?version=${VERSION}` : '' + return versionRequired ? `?version=${version}` : '' } - if (addVersion) { - Object.assign(params, {version: VERSION}) + if (versionRequired) { + Object.assign(params, {version}) } const keys = Object.keys(params) diff --git a/src/api/version.ts b/src/api/version.ts deleted file mode 100644 index 6b3ffa5..0000000 --- a/src/api/version.ts +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = '2.1'