UNPKG

sdmx-rest

Version:

SDMX REST API client for JavaScript

146 lines (118 loc) 4.09 kB
// Generated by CoffeeScript 2.7.0 (function() { var ApiVersion, DataFormat, MetadataFormat, SchemaFormat, Service, createErrorMessage, createSecureInstance, defaults, isValidEnum, isValidService, isValidUrl, service, services, hasProp = {}.hasOwnProperty; ({ApiVersion} = require('../utils/api-version')); ({isValidEnum, createErrorMessage} = require('../utils/validators')); ({DataFormat} = require('../data/data-format')); ({MetadataFormat} = require('../metadata/metadata-format')); ({SchemaFormat} = require('../schema/schema-format')); defaults = { api: ApiVersion.LATEST }; isValidUrl = function(url, errors) { var valid; valid = url; if (!valid) { errors.push(`${url} is not in a valid url`); } return valid; }; isValidService = function(q) { var errors, isValid; errors = []; isValid = isValidUrl(q.url, errors) && isValidEnum(q.api, ApiVersion, 'versions of the SDMX RESTful API', errors); return { isValid: isValid, errors: errors }; }; createSecureInstance = function(service) { var key, secure; secure = {}; for (key in service) { if (!hasProp.call(service, key)) continue; secure[key] = service[key]; } secure.url = secure.url.replace('http', 'https'); return secure; }; service = Service = (function() { class Service { static from(opts) { var input, ref; service = { id: opts != null ? opts.id : void 0, name: opts != null ? opts.name : void 0, url: opts != null ? opts.url : void 0, api: (ref = opts != null ? opts.api : void 0) != null ? ref : defaults.api, format: opts != null ? opts.format : void 0, structureFormat: opts != null ? opts.structureFormat : void 0, schemaFormat: opts != null ? opts.schemaFormat : void 0 }; input = isValidService(service); if (!input.isValid) { throw Error(createErrorMessage(input.errors, 'service')); } return service; } }; Service.BIS = { id: 'BIS', name: 'Bank for International Settlements', api: ApiVersion.v1_4_0, url: 'https://stats.bis.org/api/v1', format: DataFormat.SDMX_JSON_1_0_0, structureFormat: MetadataFormat.SDMX_JSON_1_0_0, schemaFormat: SchemaFormat.XML_SCHEMA }; Service.ECB = { id: 'ECB', name: 'European Central Bank', api: ApiVersion.v1_0_2, url: 'http://sdw-wsrest.ecb.europa.eu/service', format: DataFormat.SDMX_JSON_1_0_0_WD, structureFormat: MetadataFormat.SDMX_ML_2_1_STRUCTURE, schemaFormat: SchemaFormat.XML_SCHEMA }; Service.UNICEF = { id: 'UNICEF', name: 'UNICEF', api: ApiVersion.v1_4_0, url: 'https://sdmx.data.unicef.org/ws/public/sdmxapi/rest', format: DataFormat.SDMX_JSON_1_0_0, structureFormat: MetadataFormat.SDMX_JSON_1_0_0 }; Service.SDMXGR = { id: 'SDMXGR', name: 'SDMX Global Registry', api: ApiVersion.v1_1_0, url: 'http://registry.sdmx.org/FusionRegistry/ws/rest' }; Service.EUROSTAT = { id: 'EUROSTAT', name: 'Eurostat', api: ApiVersion.v1_0_2, url: 'http://www.ec.europa.eu/eurostat/SDMX/diss-web/rest' }; Service.OECD = { id: 'OECD', name: 'Organisation for Economic Co-operation and Development', api: ApiVersion.v1_0_2, url: 'http://stats.oecd.org/SDMX-JSON' }; Service.WB = { id: 'WB', name: 'World Bank', api: ApiVersion.v1_0_2, url: 'http://wits.worldbank.org/API/V1/SDMX/V21/rest' }; Service.ECB_S = createSecureInstance(Service.ECB); Service.SDMXGR_S = createSecureInstance(Service.SDMXGR); Service.OECD_S = createSecureInstance(Service.OECD); return Service; }).call(this); services = [service.BIS, service.ECB_S, service.EUROSTAT, service.OECD_S, service.SDMXGR_S, service.UNICEF, service.WB]; exports.Service = service; exports.services = services; }).call(this);