Organize JSON schemas for documentation generation

This commit is contained in:
Chris Clark
2015-11-05 11:01:09 -08:00
parent c104a51458
commit 782adc6a1a
79 changed files with 704 additions and 399 deletions

View File

@@ -1,7 +1,6 @@
/* @flow */
'use strict';
const _ = require('lodash');
const deriveKeypair = require('ripple-keypairs').deriveKeypair;
const ValidationError = require('./errors').ValidationError;
const schemaValidate = require('./schema-validator').schemaValidate;
@@ -9,27 +8,8 @@ function error(text) {
return new ValidationError(text);
}
function isValidSecret(secret) {
try {
deriveKeypair(secret);
return true;
} catch (err) {
return false;
}
}
function validateSecret(secret: string): void {
if (!secret) {
throw error('Parameter missing: secret');
}
if (typeof secret !== 'string' || secret[0] !== 's'
|| !isValidSecret(secret)) {
throw error('Invalid parameter: secret');
}
}
function validateLedgerRange(options) {
if (!_.isUndefined(options.minLedgerVersion)
if (!_.isUndefined(options) && !_.isUndefined(options.minLedgerVersion)
&& !_.isUndefined(options.maxLedgerVersion)) {
if (Number(options.minLedgerVersion) > Number(options.maxLedgerVersion)) {
throw error('minLedgerVersion must not be greater than maxLedgerVersion');
@@ -37,43 +17,38 @@ function validateLedgerRange(options) {
}
}
function validateOptions(schema, options) {
schemaValidate(schema, options);
validateLedgerRange(options);
function validateOptions(schema, instance) {
schemaValidate(schema, instance);
validateLedgerRange(instance.options);
}
module.exports = {
address: _.partial(schemaValidate, 'address'),
secret: validateSecret,
currency: _.partial(schemaValidate, 'currency'),
identifier: _.partial(schemaValidate, 'hash256'),
ledgerVersion: _.partial(schemaValidate, 'ledgerVersion'),
sequence: _.partial(schemaValidate, 'sequence'),
order: _.partial(schemaValidate, 'order'),
orderbook: _.partial(schemaValidate, 'orderbook'),
payment: _.partial(schemaValidate, 'payment'),
suspendedPaymentCreation:
_.partial(schemaValidate, 'suspended-payment-creation'),
suspendedPaymentExecution:
_.partial(schemaValidate, 'suspended-payment-execution'),
suspendedPaymentCancellation:
_.partial(schemaValidate, 'suspended-payment-cancellation'),
pathfind: _.partial(schemaValidate, 'pathfind'),
settings: _.partial(schemaValidate, 'settings'),
trustline: _.partial(schemaValidate, 'trustline'),
txJSON: _.partial(schemaValidate, 'tx'),
blob: _.partial(schemaValidate, 'blob'),
getTransactionsOptions: _.partial(validateOptions, 'transactions-options'),
getSettingsOptions: _.partial(validateOptions, 'settings-options'),
getAccountInfoOptions: _.partial(validateOptions, 'settings-options'),
getTrustlinesOptions: _.partial(validateOptions, 'trustlines-options'),
getBalancesOptions: _.partial(validateOptions, 'trustlines-options'),
getBalanceSheetOptions: _.partial(validateOptions, 'balance-sheet-options'),
getOrdersOptions: _.partial(validateOptions, 'orders-options'),
getOrderbookOptions: _.partial(validateOptions, 'orders-options'),
getTransactionOptions: _.partial(validateOptions, 'transaction-options'),
getLedgerOptions: _.partial(validateOptions, 'ledger-options'),
options: _.partial(validateOptions, 'options'),
getPaths: _.partial(schemaValidate, 'getPathsParameters'),
getTransactions: _.partial(validateOptions, 'getTransactionsParameters'),
getSettings: _.partial(validateOptions, 'getSettingsParameters'),
getAccountInfo: _.partial(validateOptions, 'getSettingsParameters'),
getTrustlines: _.partial(validateOptions, 'getTrustlinesParameters'),
getBalances: _.partial(validateOptions, 'getTrustlinesParameters'),
getBalanceSheet: _.partial(validateOptions, 'getBalanceSheetParameters'),
getOrders: _.partial(validateOptions, 'getOrdersParameters'),
getOrderbook: _.partial(validateOptions, 'getOrderbookParameters'),
getTransaction: _.partial(validateOptions, 'getTransactionParameters'),
getLedger: _.partial(validateOptions, 'getLedgerParameters'),
preparePayment: _.partial(schemaValidate, 'preparePaymentParameters'),
prepareOrder: _.partial(schemaValidate, 'prepareOrderParameters'),
prepareOrderCancellation:
_.partial(schemaValidate, 'prepareOrderCancellationParameters'),
prepareTrustline: _.partial(schemaValidate, 'prepareTrustlineParameters'),
prepareSettings: _.partial(schemaValidate, 'prepareSettingsParameters'),
prepareSuspendedPaymentCreation: _.partial(schemaValidate,
'prepareSuspendedPaymentCreationParameters'),
prepareSuspendedPaymentCancellation: _.partial(schemaValidate,
'prepareSuspendedPaymentCancellationParameters'),
prepareSuspendedPaymentExecution: _.partial(schemaValidate,
'prepareSuspendedPaymentExecutionParameters'),
sign: _.partial(schemaValidate, 'signParameters'),
submit: _.partial(schemaValidate, 'submitParameters'),
computeLedgerHash: _.partial(schemaValidate, 'computeLedgerHashParameters'),
apiOptions: _.partial(schemaValidate, 'api-options'),
instructions: _.partial(schemaValidate, 'instructions')
};