sdmx-rest
Version:
SDMX REST API client for JavaScript
88 lines (68 loc) • 2.13 kB
JavaScript
// Generated by CoffeeScript 2.7.0
(function() {
var ApiNumber, ApiVersion, VersionNumber, checkMultipleItems, checkVersion, contextPattern, createEntryPoint, filterPattern, parseContext, parseFilter, parseFlow, validateDataForV2;
({ApiVersion, ApiNumber} = require('../utils/api-version'));
({VersionNumber} = require('../utils/sdmx-patterns'));
createEntryPoint = function(s) {
var url;
url = s.url;
if (!s.url.endsWith('/')) {
url = s.url + '/';
}
return url;
};
parseFlow = function(f) {
var parts;
parts = f.split(",");
if (parts.length === 1) {
return ["*", f, "*"];
} else if (parts.length === 2) {
return parts.concat(["*"]);
} else {
return parts;
}
};
contextPattern = /(.*)=(.*):(.*)\((.*)\)/;
parseContext = function(f) {
return f.match(contextPattern).slice(1, 5);
};
filterPattern = /(.*)=(.*)/;
parseFilter = function(f) {
return f.match(filterPattern).slice(1, 3);
};
validateDataForV2 = function(q, s) {
if ((q.provider != null) && q.provider !== "all") {
throw Error(`provider not allowed in ${s.api}`);
}
if (q.start) {
throw Error(`start not allowed in ${s.api}`);
}
if (q.end) {
throw Error(`end not allowed in ${s.api}`);
}
if (q.key.indexOf("\+") > -1) {
throw Error(`+ not allowed in key in ${s.api}`);
}
};
checkVersion = function(q, s) {
var v;
v = q.version;
if (s.api !== ApiVersion.v2_0_0) {
if (!(v === 'latest' || v.match(VersionNumber))) {
throw Error(`Semantic versioning not allowed in ${s.api}`);
}
}
};
checkMultipleItems = function(i, s, r, a) {
if (a < ApiNumber.v1_3_0 && /\+/.test(i)) {
throw Error(`Multiple ${r} not allowed in ${s.api}`);
}
};
exports.createEntryPoint = createEntryPoint;
exports.parseFlow = parseFlow;
exports.validateDataForV2 = validateDataForV2;
exports.checkVersion = checkVersion;
exports.checkMultipleItems = checkMultipleItems;
exports.parseContext = parseContext;
exports.parseFilter = parseFilter;
}).call(this);