Split Order into signedOrder and metadata

This commit is contained in:
Leonid Logvinov
2018-02-07 20:26:13 +01:00
parent ae14b0a71d
commit 69f5f5e946
7 changed files with 164 additions and 129 deletions

View File

@@ -0,0 +1,10 @@
export const orderMetadataSchema = {
id: '/OrderMetadata',
properties: {
makerToken: { $ref: '/Token' },
takerToken: { $ref: '/Token' },
networkId: { type: 'number' },
},
required: ['makerToken', 'takerToken', 'networkId'],
type: 'object',
};

View File

@@ -1,40 +1,9 @@
export const orderSchema = {
id: '/Order',
properties: {
maker: { type: 'string' },
taker: { type: 'string' },
makerTokenAddress: { type: 'string' },
takerTokenAddress: { type: 'string' },
makerToken: { $ref: '/Token' },
takerToken: { $ref: '/Token' },
makerFee: { type: 'string' },
takerFee: { type: 'string' },
makerTokenAmount: { type: 'string' },
takerTokenAmount: { type: 'string' },
salt: { type: 'string' },
ecSignature: { $ref: '/SignatureData' },
expirationUnixTimestampSec: { type: 'string' },
feeRecipient: { type: 'string' },
exchangeContractAddress: { type: 'string' },
networkId: { type: 'number' },
signedOrder: { $ref: '/SignedOrder' },
metadata: { $ref: '/OrderMetadata' },
},
required: [
'maker',
'taker',
'makerTokenAddress',
'takerTokenAddress',
'makerToken',
'takerToken',
'makerFee',
'takerFee',
'makerTokenAmount',
'takerTokenAmount',
'salt',
'ecSignature',
'expirationUnixTimestampSec',
'feeRecipient',
'exchangeContractAddress',
'networkId',
],
required: ['signedOrder', 'metadata'],
type: 'object',
};

View File

@@ -0,0 +1,34 @@
export const signedOrderSchema = {
id: '/SignedOrder',
properties: {
maker: { type: 'string' },
taker: { type: 'string' },
makerTokenAddress: { type: 'string' },
takerTokenAddress: { type: 'string' },
makerFee: { type: 'string' },
takerFee: { type: 'string' },
makerTokenAmount: { type: 'string' },
takerTokenAmount: { type: 'string' },
salt: { type: 'string' },
ecSignature: { $ref: '/SignatureData' },
expirationUnixTimestampSec: { type: 'string' },
feeRecipient: { type: 'string' },
exchangeContractAddress: { type: 'string' },
},
required: [
'maker',
'taker',
'makerTokenAddress',
'takerTokenAddress',
'makerFee',
'takerFee',
'makerTokenAmount',
'takerTokenAmount',
'salt',
'ecSignature',
'expirationUnixTimestampSec',
'feeRecipient',
'exchangeContractAddress',
],
type: 'object',
};

View File

@@ -1,6 +1,8 @@
import { Schema as JSONSchema, Validator } from 'jsonschema';
import { orderMetadataSchema } from 'ts/schemas/metadata_schema';
import { orderSchema } from 'ts/schemas/order_schema';
import { signatureDataSchema } from 'ts/schemas/signature_data_schema';
import { signedOrderSchema } from 'ts/schemas/signed_order_schema';
import { tokenSchema } from 'ts/schemas/token_schema';
export class SchemaValidator {
@@ -9,6 +11,8 @@ export class SchemaValidator {
this._validator = new Validator();
this._validator.addSchema(signatureDataSchema as JSONSchema, signatureDataSchema.id);
this._validator.addSchema(tokenSchema as JSONSchema, tokenSchema.id);
this._validator.addSchema(orderMetadataSchema as JSONSchema, orderMetadataSchema.id);
this._validator.addSchema(signedOrderSchema as JSONSchema, signedOrderSchema.id);
this._validator.addSchema(orderSchema as JSONSchema, orderSchema.id);
}
public validate(instance: object, schema: Schema) {