diff options
author | Brandon Millman <brandon.millman@gmail.com> | 2018-09-15 20:08:19 +0800 |
---|---|---|
committer | Brandon Millman <brandon.millman@gmail.com> | 2018-09-15 20:14:55 +0800 |
commit | 4e59be9afce49fca8b396c305d5271c8299c85c1 (patch) | |
tree | 845ccbb9d0d68c59d45b7b05c32adae626757560 /packages/asset-buyer/src/order_fetchers/provided_order_fetcher.ts | |
parent | 190bf2599c1327fffd03d8a9d50bc7568190cf33 (diff) | |
download | dexon-0x-contracts-4e59be9afce49fca8b396c305d5271c8299c85c1.tar dexon-0x-contracts-4e59be9afce49fca8b396c305d5271c8299c85c1.tar.gz dexon-0x-contracts-4e59be9afce49fca8b396c305d5271c8299c85c1.tar.bz2 dexon-0x-contracts-4e59be9afce49fca8b396c305d5271c8299c85c1.tar.lz dexon-0x-contracts-4e59be9afce49fca8b396c305d5271c8299c85c1.tar.xz dexon-0x-contracts-4e59be9afce49fca8b396c305d5271c8299c85c1.tar.zst dexon-0x-contracts-4e59be9afce49fca8b396c305d5271c8299c85c1.zip |
Implement ProvidedOrderFetcher
Diffstat (limited to 'packages/asset-buyer/src/order_fetchers/provided_order_fetcher.ts')
-rw-r--r-- | packages/asset-buyer/src/order_fetchers/provided_order_fetcher.ts | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/asset-buyer/src/order_fetchers/provided_order_fetcher.ts b/packages/asset-buyer/src/order_fetchers/provided_order_fetcher.ts new file mode 100644 index 000000000..29b03f1c4 --- /dev/null +++ b/packages/asset-buyer/src/order_fetchers/provided_order_fetcher.ts @@ -0,0 +1,41 @@ +import { schemas } from '@0xproject/json-schemas'; +import { SignedOrder } from '@0xproject/types'; +import { BigNumber } from '@0xproject/utils'; +import * as _ from 'lodash'; + +import { constants } from '../constants'; +import { + AssetBuyerError, + OrderFetcher, + OrderFetcherRequest, + OrderFetcherResponse, + SignedOrderWithRemainingFillableMakerAssetAmount, +} from '../types'; +import { assert } from '../utils/assert'; +import { orderUtils } from '../utils/order_utils'; + +export class ProvidedOrderFetcher implements OrderFetcher { + public readonly providedOrders: SignedOrder[]; + /** + * Instantiates a new ProvidedOrderFetcher instance + * @param providedOrders An array of objects that conform to SignedOrder to fetch from. + * @return An instance of ProvidedOrderFetcher + */ + constructor(providedOrders: SignedOrder[]) { + assert.doesConformToSchema('providedOrders', providedOrders, schemas.signedOrdersSchema); + this.providedOrders = providedOrders; + } + /** + * Given an object that conforms to OrderFetcherRequest, return the corresponding OrderFetcherResponse that satisfies the request. + * @param orderFetchRequest An instance of OrderFetcherRequest. See type for more information. + * @return An instance of OrderFetcherResponse. See type for more information. + */ + public async fetchOrdersAsync(orderFetchRequest: OrderFetcherRequest): Promise<OrderFetcherResponse> { + assert.isValidOrderFetcherRequest('orderFetchRequest', orderFetchRequest); + const { makerAssetData, takerAssetData } = orderFetchRequest; + const orders = _.filter(this.providedOrders, order => { + return order.makerAssetData === makerAssetData && order.takerAssetData === takerAssetData; + }); + return { orders }; + } +} |