sdmx-rest
Version:
SDMX REST API client for JavaScript
146 lines (118 loc) • 4.09 kB
JavaScript
// 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);