UNPKG

sdmx-rest

Version:

SDMX REST API client for JavaScript

88 lines (76 loc) 2.35 kB
// 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);