Add signedOrderSchema and all subschemas

This commit is contained in:
Leonid Logvinov 2017-05-30 12:00:23 +02:00
parent 603a88872d
commit 699e588d1f
No known key found for this signature in database
GPG Key ID: 0DD294BFDE8C95D4
2 changed files with 56 additions and 1 deletions

View File

@ -0,0 +1,50 @@
export const addressSchema = {
id: '/addressSchema',
type: 'string',
pattern: '^0[xX][0-9A-Fa-f]{40}$',
};
export const bigNumberSchema = {
id: '/bigNumberSchema',
type: 'string',
pattern: '^\d*$',
};
export const orderSchema = {
id: '/orderSchema',
properties: {
maker: {$ref: '/addressSchema'},
taker: {$ref: '/addressSchema'},
makerFee: {$ref: '/bigNumberSchema'},
takerFee: {$ref: '/bigNumberSchema'},
makerTokenAmount: {$ref: '/bigNumberSchema'},
takerTokenAmount: {$ref: '/bigNumberSchema'},
makerTokenAddress: {$ref: '/addressSchema'},
takerTokenAddress: {$ref: '/addressSchema'},
salt: {$ref: '/bigNumberSchema'},
fillAmount: {$ref: '/bigNumberSchema'},
feeRecipient: {$ref: '/addressSchema'},
expirationUnixTimestampSec: {$ref: '/bigNumberSchema'},
},
required: [
'maker', /*'taker',*/ 'makerFee', 'takerFee', 'makerTokenAmount', 'takerTokenAmount',
'salt', 'fillAmount', 'feeRecipient', 'expirationUnixTimestampSec',
],
type: 'object',
};
export const signedOrderSchema = {
allOf: [
{ $ref: '/orderSchema' },
{
properties: {
ecSignature: {$ref: '/addressSchema'},
},
required: ['ecSignature'],
},
],
};

View File

@ -1,12 +1,17 @@
import {Validator, ValidatorResult} from 'jsonschema';
import {ecSignatureSchema, ecSignatureParameter} from '../schemas/ec_signature_schema';
import {addressSchema, bigNumberSchema, orderSchema, signedOrderSchema} from '../schemas/signed_order_schema';
export class SchemaValidator {
private validator: Validator;
constructor() {
this.validator = new Validator();
this.validator.addSchema(ecSignatureParameter, ecSignatureParameter.id);
this.validator.addSchema(orderSchema, orderSchema.id);
this.validator.addSchema(addressSchema, addressSchema.id);
this.validator.addSchema(bigNumberSchema, bigNumberSchema.id);
this.validator.addSchema(ecSignatureSchema, ecSignatureSchema.id);
this.validator.addSchema(signedOrderSchema, signedOrderSchema.id);
this.validator.addSchema(ecSignatureParameter, ecSignatureParameter.id);
}
public validate(instance: object, schema: Schema): ValidatorResult {
return this.validator.validate(instance, schema);