sdmx-rest
Version:
SDMX REST API client for JavaScript
89 lines (77 loc) • 2.64 kB
JavaScript
// Generated by CoffeeScript 2.7.0
(function() {
var IDType, NCNameIDType, NestedNCNameIDType, SchemaContext, SchemaQuery, SingleVersionType, ValidQuery, createErrorMessage, defaults, isValidEnum, isValidExplicit, isValidPattern, isValidQuery, query,
hasProp = {}.hasOwnProperty;
({SchemaContext} = require('./schema-context'));
({NestedNCNameIDType, IDType, SingleVersionType, NCNameIDType} = require('../utils/sdmx-patterns'));
({isValidEnum, isValidPattern, createErrorMessage} = require('../utils/validators'));
defaults = {
version: 'latest',
explicit: false
};
isValidExplicit = function(input, errors) {
var valid;
valid = typeof input === 'boolean';
if (!valid) {
errors.push(`${input} is not a valid value for explicit. Must be true or false`);
}
return valid;
};
ValidQuery = {
context: function(q, i, e) {
return isValidEnum(i, SchemaContext, 'context', e);
},
agency: function(q, i, e) {
return isValidPattern(i, NestedNCNameIDType, 'agency', e);
},
id: function(q, i, e) {
return isValidPattern(i, IDType, 'resource ids', e);
},
version: function(q, i, e) {
return isValidPattern(i, SingleVersionType, 'versions', e);
},
explicit: function(q, i, e) {
return isValidExplicit(i, e);
},
obsDimension: function(q, i, e) {
return !i || isValidPattern(i, NCNameIDType, 'obs dimension', e);
}
};
isValidQuery = function(query) {
var errors, isValid, k, v;
errors = [];
isValid = false;
for (k in query) {
if (!hasProp.call(query, k)) continue;
v = query[k];
isValid = ValidQuery[k](query, v, errors);
if (!isValid) {
break;
}
}
return {
isValid: isValid,
errors: errors
};
};
// A query for XML schemas, as defined by the SDMX RESTful API.
query = SchemaQuery = class SchemaQuery {
static from(opts) {
var input, ref, ref1;
query = {
context: opts != null ? opts.context : void 0,
agency: opts != null ? opts.agency : void 0,
id: opts != null ? opts.id : void 0,
version: (ref = opts != null ? opts.version : void 0) != null ? ref : defaults.version,
explicit: (ref1 = opts != null ? opts.explicit : void 0) != null ? ref1 : defaults.explicit,
obsDimension: opts != null ? opts.obsDimension : void 0
};
input = isValidQuery(query);
if (!input.isValid) {
throw Error(createErrorMessage(input.errors, 'schema query'));
}
return query;
}
};
exports.SchemaQuery = query;
}).call(this);