aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/schemas/signed_order_schema.ts50
-rw-r--r--src/utils/schema_validator.ts7
2 files changed, 56 insertions, 1 deletions
diff --git a/src/schemas/signed_order_schema.ts b/src/schemas/signed_order_schema.ts
new file mode 100644
index 000000000..b9321cad1
--- /dev/null
+++ b/src/schemas/signed_order_schema.ts
@@ -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'],
+ },
+ ],
+};
diff --git a/src/utils/schema_validator.ts b/src/utils/schema_validator.ts
index 61f4c09c8..0159b6b0b 100644
--- a/src/utils/schema_validator.ts
+++ b/src/utils/schema_validator.ts
@@ -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);