Skip to content

Commit

Permalink
feat: allow pass a version for orders queries (#129)
Browse files Browse the repository at this point in the history
  • Loading branch information
vbrvk authored Feb 13, 2025
1 parent 0979bda commit 88d1752
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 17 deletions.
11 changes: 7 additions & 4 deletions src/api/fusion-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
OrderStatusResponse,
OrdersByMakerResponse
} from './orders'
import {OrdersVersion} from './ordersVersion'
import {AxiosProviderConnector} from '../connector'

export class FusionApi {
Expand Down Expand Up @@ -76,19 +77,21 @@ export class FusionApi {
}

getActiveOrders(
params: ActiveOrdersRequest = ActiveOrdersRequest.new()
params: ActiveOrdersRequest = ActiveOrdersRequest.new(),
ordersVersion = OrdersVersion._2_1
): Promise<ActiveOrdersResponse> {
return this.ordersApi.getActiveOrders(params)
return this.ordersApi.getActiveOrders(params, ordersVersion)
}

getOrderStatus(params: OrderStatusRequest): Promise<OrderStatusResponse> {
return this.ordersApi.getOrderStatus(params)
}

getOrdersByMaker(
params: OrdersByMakerRequest
params: OrdersByMakerRequest,
ordersVersion = OrdersVersion._2_1
): Promise<OrdersByMakerResponse> {
return this.ordersApi.getOrdersByMaker(params)
return this.ordersApi.getOrdersByMaker(params, ordersVersion)
}

submitOrder(params: RelayerRequest): Promise<void> {
Expand Down
1 change: 1 addition & 0 deletions src/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ export * from './orders/index'
export * from './fusion-api'
export * from './pagination'
export * from './types'
export * from './ordersVersion'
2 changes: 1 addition & 1 deletion src/api/orders/order-api.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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}`
)
})

Expand Down
14 changes: 8 additions & 6 deletions src/api/orders/orders.api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -31,15 +31,16 @@ export class OrdersApi {
}

async getActiveOrders(
params: ActiveOrdersRequest
params: ActiveOrdersRequest,
ordersVersion: OrdersVersion
): Promise<ActiveOrdersResponse> {
const err = params.validate()

if (err) {
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<ActiveOrdersResponse>(url)
Expand All @@ -54,21 +55,22 @@ 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<OrderStatusResponse>(url)
}

async getOrdersByMaker(
params: OrdersByMakerRequest
params: OrdersByMakerRequest,
ordersVersion: OrdersVersion
): Promise<OrdersByMakerResponse> {
const err = params.validate()

if (err) {
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)
Expand Down
5 changes: 5 additions & 0 deletions src/api/ordersVersion.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export enum OrdersVersion {
all = 'all',
_2_1 = '2.1',
_2_0 = '2.0'
}
12 changes: 7 additions & 5 deletions src/api/params.ts
Original file line number Diff line number Diff line change
@@ -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<string | number, string | string[] | number | boolean>
>(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)
Expand Down
1 change: 0 additions & 1 deletion src/api/version.ts

This file was deleted.

0 comments on commit 88d1752

Please sign in to comment.