Use orderHashSchema to validate order hash
This commit is contained in:
		@@ -17,7 +17,8 @@ import {ecSignatureSchema} from './schemas/ec_signature_schema';
 | 
			
		||||
import {TokenWrapper} from './contract_wrappers/token_wrapper';
 | 
			
		||||
import {ProxyWrapper} from './contract_wrappers/proxy_wrapper';
 | 
			
		||||
import {ECSignature, ZeroExError, Order, SignedOrder, Web3Provider} from './types';
 | 
			
		||||
import {orderSchema} from './schemas/order_schemas';
 | 
			
		||||
import {orderSchema, orderHashSchema} from './schemas/order_schemas';
 | 
			
		||||
import {SchemaValidator} from './utils/schema_validator';
 | 
			
		||||
 | 
			
		||||
// Customize our BigNumber instances
 | 
			
		||||
bigNumberConfigs.configure();
 | 
			
		||||
@@ -110,7 +111,8 @@ export class ZeroEx {
 | 
			
		||||
        // Since this method can be called to check if any arbitrary string conforms to an orderHash's
 | 
			
		||||
        // format, we only assert that we were indeed passed a string.
 | 
			
		||||
        assert.isString('orderHash', orderHash);
 | 
			
		||||
        const isValidOrderHash = utils.isValidOrderHash(orderHash);
 | 
			
		||||
        const schemaValidator = new SchemaValidator();
 | 
			
		||||
        const isValidOrderHash = schemaValidator.validate(orderHash, orderHashSchema).valid;
 | 
			
		||||
        return isValidOrderHash;
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ import {signedOrdersSchema} from '../schemas/signed_orders_schema';
 | 
			
		||||
import {orderFillRequestsSchema} from '../schemas/order_fill_requests_schema';
 | 
			
		||||
import {orderCancellationRequestsSchema} from '../schemas/order_cancel_schema';
 | 
			
		||||
import {orderFillOrKillRequestsSchema} from '../schemas/order_fill_or_kill_requests_schema';
 | 
			
		||||
import {signedOrderSchema, orderSchema} from '../schemas/order_schemas';
 | 
			
		||||
import {signedOrderSchema, orderSchema, orderHashSchema} from '../schemas/order_schemas';
 | 
			
		||||
import {constants} from '../utils/constants';
 | 
			
		||||
import {TokenWrapper} from './token_wrapper';
 | 
			
		||||
import {decorators} from '../utils/decorators';
 | 
			
		||||
@@ -105,7 +105,7 @@ export class ExchangeWrapper extends ContractWrapper {
 | 
			
		||||
     */
 | 
			
		||||
    public async getUnavailableTakerAmountAsync(orderHash: string,
 | 
			
		||||
                                                exchangeContractAddress: string): Promise<BigNumber.BigNumber> {
 | 
			
		||||
        assert.isValidOrderHash('orderHash', orderHash);
 | 
			
		||||
        assert.doesConformToSchema('orderHash', orderHash, orderHashSchema);
 | 
			
		||||
 | 
			
		||||
        const exchangeContract = await this._getExchangeContractAsync(exchangeContractAddress);
 | 
			
		||||
        let unavailableAmountInBaseUnits = await exchangeContract.getUnavailableValueT.call(orderHash);
 | 
			
		||||
@@ -121,7 +121,7 @@ export class ExchangeWrapper extends ContractWrapper {
 | 
			
		||||
     */
 | 
			
		||||
    public async getFilledTakerAmountAsync(orderHash: string,
 | 
			
		||||
                                           exchangeContractAddress: string): Promise<BigNumber.BigNumber> {
 | 
			
		||||
        assert.isValidOrderHash('orderHash', orderHash);
 | 
			
		||||
        assert.doesConformToSchema('orderHash', orderHash, orderHashSchema);
 | 
			
		||||
 | 
			
		||||
        const exchangeContract = await this._getExchangeContractAsync(exchangeContractAddress);
 | 
			
		||||
        let fillAmountInBaseUnits = await exchangeContract.filled.call(orderHash);
 | 
			
		||||
@@ -138,7 +138,7 @@ export class ExchangeWrapper extends ContractWrapper {
 | 
			
		||||
     */
 | 
			
		||||
    public async getCanceledTakerAmountAsync(orderHash: string,
 | 
			
		||||
                                             exchangeContractAddress: string): Promise<BigNumber.BigNumber> {
 | 
			
		||||
        assert.isValidOrderHash('orderHash', orderHash);
 | 
			
		||||
        assert.doesConformToSchema('orderHash', orderHash, orderHashSchema);
 | 
			
		||||
 | 
			
		||||
        const exchangeContract = await this._getExchangeContractAsync(exchangeContractAddress);
 | 
			
		||||
        let cancelledAmountInBaseUnits = await exchangeContract.cancelled.call(orderHash);
 | 
			
		||||
 
 | 
			
		||||
@@ -45,13 +45,10 @@ export const assert = {
 | 
			
		||||
    isNumber(variableName: string, value: number): void {
 | 
			
		||||
        this.assert(_.isFinite(value), this.typeAssertionMessage(variableName, 'number', value));
 | 
			
		||||
    },
 | 
			
		||||
    isValidOrderHash(variableName: string, value: string): void {
 | 
			
		||||
        this.assert(utils.isValidOrderHash(value), this.typeAssertionMessage(variableName, 'orderHash', value));
 | 
			
		||||
    },
 | 
			
		||||
    isBoolean(variableName: string, value: boolean): void {
 | 
			
		||||
        this.assert(_.isBoolean(value), this.typeAssertionMessage(variableName, 'boolean', value));
 | 
			
		||||
    },
 | 
			
		||||
    doesConformToSchema(variableName: string, value: object, schema: Schema): void {
 | 
			
		||||
    doesConformToSchema(variableName: string, value: any, schema: Schema): void {
 | 
			
		||||
        const schemaValidator = new SchemaValidator();
 | 
			
		||||
        const validationResult = schemaValidator.validate(value, schema);
 | 
			
		||||
        const hasValidationErrors = validationResult.errors.length > 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,10 +25,6 @@ export const utils = {
 | 
			
		||||
    isTestRpc(nodeVersion: string): boolean {
 | 
			
		||||
        return _.includes(nodeVersion, 'TestRPC');
 | 
			
		||||
    },
 | 
			
		||||
    isValidOrderHash(orderHashHex: string): boolean {
 | 
			
		||||
        const isValid = /^0x[0-9A-F]{64}$/i.test(orderHashHex);
 | 
			
		||||
        return isValid;
 | 
			
		||||
    },
 | 
			
		||||
    spawnSwitchErr(name: string, value: any): Error {
 | 
			
		||||
        return new Error(`Unexpected switch value: ${value} encountered for ${name}`);
 | 
			
		||||
    },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user