diff options
author | Hsuan Lee <hsuan@cobinhood.com> | 2019-01-19 18:42:04 +0800 |
---|---|---|
committer | Hsuan Lee <hsuan@cobinhood.com> | 2019-01-19 18:42:04 +0800 |
commit | 7ae38906926dc09bc10670c361af0d2bf0050426 (patch) | |
tree | 5fb10ae366b987db09e4ddb4bc3ba0f75404ad08 /packages/asset-buyer/src/order_providers | |
parent | b5fd3c72a08aaa6957917d74c333387a16edf66b (diff) | |
download | dexon-sol-tools-7ae38906926dc09bc10670c361af0d2bf0050426.tar dexon-sol-tools-7ae38906926dc09bc10670c361af0d2bf0050426.tar.gz dexon-sol-tools-7ae38906926dc09bc10670c361af0d2bf0050426.tar.bz2 dexon-sol-tools-7ae38906926dc09bc10670c361af0d2bf0050426.tar.lz dexon-sol-tools-7ae38906926dc09bc10670c361af0d2bf0050426.tar.xz dexon-sol-tools-7ae38906926dc09bc10670c361af0d2bf0050426.tar.zst dexon-sol-tools-7ae38906926dc09bc10670c361af0d2bf0050426.zip |
Update dependency packages
Diffstat (limited to 'packages/asset-buyer/src/order_providers')
-rw-r--r-- | packages/asset-buyer/src/order_providers/basic_order_provider.ts | 41 | ||||
-rw-r--r-- | packages/asset-buyer/src/order_providers/standard_relayer_api_order_provider.ts | 111 |
2 files changed, 0 insertions, 152 deletions
diff --git a/packages/asset-buyer/src/order_providers/basic_order_provider.ts b/packages/asset-buyer/src/order_providers/basic_order_provider.ts deleted file mode 100644 index 76685f27a..000000000 --- a/packages/asset-buyer/src/order_providers/basic_order_provider.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { schemas } from '@0x/json-schemas'; -import { SignedOrder } from '@0x/types'; -import * as _ from 'lodash'; - -import { OrderProvider, OrderProviderRequest, OrderProviderResponse } from '../types'; -import { assert } from '../utils/assert'; - -export class BasicOrderProvider implements OrderProvider { - public readonly orders: SignedOrder[]; - /** - * Instantiates a new BasicOrderProvider instance - * @param orders An array of objects that conform to SignedOrder to fetch from. - * @return An instance of BasicOrderProvider - */ - constructor(orders: SignedOrder[]) { - assert.doesConformToSchema('orders', orders, schemas.signedOrdersSchema); - this.orders = orders; - } - /** - * Given an object that conforms to OrderFetcherRequest, return the corresponding OrderProviderResponse that satisfies the request. - * @param orderProviderRequest An instance of OrderFetcherRequest. See type for more information. - * @return An instance of OrderProviderResponse. See type for more information. - */ - public async getOrdersAsync(orderProviderRequest: OrderProviderRequest): Promise<OrderProviderResponse> { - assert.isValidOrderProviderRequest('orderProviderRequest', orderProviderRequest); - const { makerAssetData, takerAssetData } = orderProviderRequest; - const orders = _.filter(this.orders, order => { - return order.makerAssetData === makerAssetData && order.takerAssetData === takerAssetData; - }); - return { orders }; - } - /** - * Given a taker asset data string, return all availabled paired maker asset data strings. - * @param takerAssetData A string representing the taker asset data. - * @return An array of asset data strings that can be purchased using takerAssetData. - */ - public async getAvailableMakerAssetDatasAsync(takerAssetData: string): Promise<string[]> { - const ordersWithTakerAssetData = _.filter(this.orders, { takerAssetData }); - return _.map(ordersWithTakerAssetData, order => order.makerAssetData); - } -} diff --git a/packages/asset-buyer/src/order_providers/standard_relayer_api_order_provider.ts b/packages/asset-buyer/src/order_providers/standard_relayer_api_order_provider.ts deleted file mode 100644 index 813c9923b..000000000 --- a/packages/asset-buyer/src/order_providers/standard_relayer_api_order_provider.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { HttpClient } from '@0x/connect'; -import { APIOrder, AssetPairsResponse, OrderbookResponse } from '@0x/types'; -import * as _ from 'lodash'; - -import { - AssetBuyerError, - OrderProvider, - OrderProviderRequest, - OrderProviderResponse, - SignedOrderWithRemainingFillableMakerAssetAmount, -} from '../types'; -import { assert } from '../utils/assert'; -import { orderUtils } from '../utils/order_utils'; - -export class StandardRelayerAPIOrderProvider implements OrderProvider { - public readonly apiUrl: string; - public readonly networkId: number; - private readonly _sraClient: HttpClient; - /** - * Given an array of APIOrder objects from a standard relayer api, return an array - * of SignedOrderWithRemainingFillableMakerAssetAmounts - */ - private static _getSignedOrderWithRemainingFillableMakerAssetAmountFromApi( - apiOrders: APIOrder[], - ): SignedOrderWithRemainingFillableMakerAssetAmount[] { - const result = _.map(apiOrders, apiOrder => { - const { order, metaData } = apiOrder; - // calculate remainingFillableMakerAssetAmount from api metadata, else assume order is completely fillable - const remainingFillableTakerAssetAmount = _.get( - metaData, - 'remainingTakerAssetAmount', - order.takerAssetAmount, - ); - const remainingFillableMakerAssetAmount = orderUtils.getRemainingMakerAmount( - order, - remainingFillableTakerAssetAmount, - ); - const newOrder = { - ...order, - remainingFillableMakerAssetAmount, - }; - return newOrder; - }); - return result; - } - /** - * Instantiates a new StandardRelayerAPIOrderProvider instance - * @param apiUrl The standard relayer API base HTTP url you would like to source orders from. - * @param networkId The ethereum network id. - * @return An instance of StandardRelayerAPIOrderProvider - */ - constructor(apiUrl: string, networkId: number) { - assert.isWebUri('apiUrl', apiUrl); - assert.isNumber('networkId', networkId); - this.apiUrl = apiUrl; - this.networkId = networkId; - this._sraClient = new HttpClient(apiUrl); - } - /** - * Given an object that conforms to OrderProviderRequest, return the corresponding OrderProviderResponse that satisfies the request. - * @param orderProviderRequest An instance of OrderProviderRequest. See type for more information. - * @return An instance of OrderProviderResponse. See type for more information. - */ - public async getOrdersAsync(orderProviderRequest: OrderProviderRequest): Promise<OrderProviderResponse> { - assert.isValidOrderProviderRequest('orderProviderRequest', orderProviderRequest); - const { makerAssetData, takerAssetData } = orderProviderRequest; - const orderbookRequest = { baseAssetData: makerAssetData, quoteAssetData: takerAssetData }; - const requestOpts = { networkId: this.networkId }; - let orderbook: OrderbookResponse; - try { - orderbook = await this._sraClient.getOrderbookAsync(orderbookRequest, requestOpts); - } catch (err) { - throw new Error(AssetBuyerError.StandardRelayerApiError); - } - const apiOrders = orderbook.asks.records; - const orders = StandardRelayerAPIOrderProvider._getSignedOrderWithRemainingFillableMakerAssetAmountFromApi( - apiOrders, - ); - return { - orders, - }; - } - /** - * Given a taker asset data string, return all availabled paired maker asset data strings. - * @param takerAssetData A string representing the taker asset data. - * @return An array of asset data strings that can be purchased using takerAssetData. - */ - public async getAvailableMakerAssetDatasAsync(takerAssetData: string): Promise<string[]> { - // Return a maximum of 1000 asset datas - const maxPerPage = 1000; - const requestOpts = { networkId: this.networkId, perPage: maxPerPage }; - const assetPairsRequest = { assetDataA: takerAssetData }; - const fullRequest = { - ...requestOpts, - ...assetPairsRequest, - }; - let response: AssetPairsResponse; - try { - response = await this._sraClient.getAssetPairsAsync(fullRequest); - } catch (err) { - throw new Error(AssetBuyerError.StandardRelayerApiError); - } - return _.map(response.records, item => { - if (item.assetDataA.assetData === takerAssetData) { - return item.assetDataB.assetData; - } else { - return item.assetDataA.assetData; - } - }); - } -} |