UNPKG

sdmx-rest

Version:

SDMX REST API client for JavaScript

186 lines (169 loc) 4.91 kB
// Generated by CoffeeScript 2.7.0 (function() { var ApiNumber, ApiVersion, Handler, createAvailabilityQuery, createEntryPoint, createShortAvailabilityQuery, createShortV1AvailUrl, createShortV2AvailUrl, createV1AvailUrl, createV2AvailUrl, getKeyFromVersion, handleAvailabilityPathParams, handleAvailabilityQueryParams, handleAvailabilityV2PathParams, handleAvailabilityV2QueryParams, handler, parseFlow, validateDataForV2; ({ApiNumber, ApiVersion, getKeyFromVersion} = require('../utils/api-version')); ({createEntryPoint, validateDataForV2, parseFlow} = require('../utils/url-generator-common')); handleAvailabilityPathParams = function(q) { var path; path = []; if (q.component !== 'all') { path.push(q.component); } if (q.provider !== 'all' || path.length) { path.push(q.provider); } if (q.key !== 'all' || path.length) { path.push(q.key); } if (path.length) { return '/' + path.reverse().join('/'); } else { return ''; } }; handleAvailabilityQueryParams = function(q) { var p; p = []; if (q.updatedAfter) { p.push(`updatedAfter=${q.updatedAfter}`); } if (q.end) { p.push(`endPeriod=${q.end}`); } if (q.start) { p.push(`startPeriod=${q.start}`); } if (q.mode !== 'exact') { p.push(`mode=${q.mode}`); } if (q.references !== 'none') { p.push(`references=${q.references}`); } if (p.length > 0) { return '?' + p.reduceRight(function(x, y) { return x + '&' + y; }); } else { return ''; } }; handleAvailabilityV2PathParams = function(q) { var k, path; path = []; if (q.component !== 'all') { path.push(q.component); } k = q.key === 'all' ? '*' : q.key; if (k !== '*' || path.length) { path.push(k); } if (path.length) { return '/' + path.reverse().join('/'); } else { return ''; } }; handleAvailabilityV2QueryParams = function(q) { var p; p = []; if (q.updatedAfter) { p.push(`updatedAfter=${q.updatedAfter}`); } if (q.mode !== 'exact') { p.push(`mode=${q.mode}`); } if (q.references !== 'none') { p.push(`references=${q.references}`); } if (p.length > 0) { return '?' + p.reduceRight(function(x, y) { return x + '&' + y; }); } else { return ''; } }; createShortV1AvailUrl = function(q, s) { var u; u = createEntryPoint(s); u += `availableconstraint/${q.flow}`; u += handleAvailabilityPathParams(q); u += handleAvailabilityQueryParams(q); return u; }; createShortV2AvailUrl = function(q, s) { var fc, pp, u; validateDataForV2(q, s); u = createEntryPoint(s); u += "availability/dataflow/"; fc = parseFlow(q.flow); u += `${fc[0]}/${fc[1]}`; pp = handleAvailabilityV2PathParams(q); if (fc[2] !== "*" || pp !== "") { u += `/${fc[2]}`; } u += pp; u += handleAvailabilityV2QueryParams(q); return u; }; createV1AvailUrl = function(q, s) { var url; url = createEntryPoint(s); url += 'availableconstraint'; url += `/${q.flow}/${q.key}/${q.provider}/${q.component}`; url += `?mode=${q.mode}&references=${q.references}`; if (q.start) { url += `&startPeriod=${q.start}`; } if (q.end) { url += `&endPeriod=${q.end}`; } if (q.updatedAfter) { url += `&updatedAfter=${q.updatedAfter}`; } return url; }; createV2AvailUrl = function(q, s) { var fc, url; validateDataForV2(q, s); url = createEntryPoint(s); url += 'availability'; fc = parseFlow(q.flow); url += `/dataflow/${fc[0]}/${fc[1]}/${fc[2]}/`; url += q.key === "all" ? "*/" : `${q.key}/`; url += q.component === "all" ? "*" : `${q.component}`; url += `?mode=${q.mode}&references=${q.references}`; if (q.updatedAfter) { url += `&updatedAfter=${q.updatedAfter}`; } return url; }; createShortAvailabilityQuery = function(q, s, api_number) { if (api_number < ApiNumber.v2_0_0) { return createShortV1AvailUrl(q, s); } else { return createShortV2AvailUrl(q, s); } }; createAvailabilityQuery = function(q, s, api_number) { if (api_number < ApiNumber.v2_0_0) { return createV1AvailUrl(q, s); } else { return createV2AvailUrl(q, s); } }; handler = Handler = class Handler { handle(q, s, skip) { var api_number; api_number = ApiNumber[getKeyFromVersion(s.api)]; if (api_number < ApiNumber.v1_3_0) { throw Error(`Availability query not supported in ${s.api}`); } else if (skip) { return createShortAvailabilityQuery(q, s, api_number); } else { return createAvailabilityQuery(q, s, api_number); } } }; exports.AvailabilityQueryHandler = handler; }).call(this);