sdmx-rest
Version:
SDMX REST API client for JavaScript
88 lines (76 loc) • 2.35 kB
JavaScript
// Generated by CoffeeScript 2.7.0
(function() {
var ApiResources, ApiVersion, Handler, checkContext, checkExplicit, checkVersion, createEntryPoint, createSchemaQuery, createShortSchemaQuery, handleSchemaQueryParams, handler,
indexOf = [].indexOf;
({ApiResources, ApiVersion} = require('../utils/api-version'));
({createEntryPoint, checkVersion} = require('../utils/url-generator-common'));
createSchemaQuery = function(q, s) {
var u, v;
u = createEntryPoint(s);
v = s.api === ApiVersion.v2_0_0 && q.version === "latest" ? "~" : q.version;
u += `schema/${q.context}/${q.agency}/${q.id}/${v}`;
if (s.api === ApiVersion.v2_0_0) {
if (q.obsDimension) {
u += `?dimensionAtObservation=${q.obsDimension}`;
}
} else {
u += `?explicitMeasure=${q.explicit}`;
if (q.obsDimension) {
u += `&dimensionAtObservation=${q.obsDimension}`;
}
}
return u;
};
handleSchemaQueryParams = function(q) {
var p;
p = [];
if (q.obsDimension) {
p.push(`dimensionAtObservation=${q.obsDimension}`);
}
if (q.explicit) {
p.push(`explicitMeasure=${q.explicit}`);
}
if (p.length > 0) {
return '?' + p.reduceRight(function(x, y) {
return x + '&' + y;
});
} else {
return '';
}
};
createShortSchemaQuery = function(q, s) {
var u;
u = createEntryPoint(s);
u += `schema/${q.context}/${q.agency}/${q.id}`;
if (!(q.version === 'latest' || q.version === '~')) {
u += `/${q.version}`;
}
u += handleSchemaQueryParams(q);
return u;
};
checkContext = function(q, s) {
var api, ref;
api = s.api.replace(/\./g, '_');
if (ref = q.context, indexOf.call(ApiResources[api], ref) < 0) {
throw Error(`${q.context} not allowed in ${s.api}`);
}
};
checkExplicit = function(q, s) {
if (q.explicit && s && s.api && s.api === ApiVersion.v2_0_0) {
throw Error(`explicit parameter not allowed in ${s.api}`);
}
};
handler = Handler = class Handler {
handle(q, s, skip) {
checkContext(q, s);
checkExplicit(q, s);
checkVersion(q, s);
if (skip) {
return createShortSchemaQuery(q, s);
} else {
return createSchemaQuery(q, s);
}
}
};
exports.SchemaQueryHandler = handler;
}).call(this);