sdmx-rest
Version:
SDMX REST API client for JavaScript
51 lines (39 loc) • 2.12 kB
JavaScript
// Generated by CoffeeScript 2.7.0
(function() {
var ApiVersion, AvailabilityQuery2Handler, AvailabilityQueryHandler, DataQuery2Handler, DataQueryHandler, Generator, MetadataQueryHandler, SchemaQueryHandler, generator;
({ApiVersion} = require('../utils/api-version'));
({AvailabilityQueryHandler} = require('../utils/url-generator-availability'));
({AvailabilityQuery2Handler} = require('../utils/url-generator-availability2'));
({SchemaQueryHandler} = require('../utils/url-generator-schema'));
({DataQueryHandler} = require('../utils/url-generator-data'));
({DataQuery2Handler} = require('../utils/url-generator-data2'));
({MetadataQueryHandler} = require('../utils/url-generator-metadata'));
generator = Generator = class Generator {
getUrl(query, service, skipDefaults) {
this.query = query;
this.service = service;
if (!this.query) {
throw ReferenceError("A valid query must be supplied");
}
if (!(this.service && this.service.url)) {
throw ReferenceError(`${this.service} is not a valid service`);
}
if ((this.query.context != null) && (this.query.attributes != null)) {
return new DataQuery2Handler().handle(this.query, this.service, skipDefaults);
} else if ((this.query.context != null) && (this.query.mode != null)) {
return new AvailabilityQuery2Handler().handle(this.query, this.service, skipDefaults);
} else if (this.query.mode != null) {
return new AvailabilityQueryHandler().handle(this.query, this.service, skipDefaults);
} else if (this.query.flow != null) {
return new DataQueryHandler().handle(this.query, this.service, skipDefaults);
} else if (this.query.resource != null) {
return new MetadataQueryHandler().handle(this.query, this.service, skipDefaults);
} else if (this.query.context != null) {
return new SchemaQueryHandler().handle(this.query, this.service, skipDefaults);
} else {
throw TypeError(`${this.query} is not a valid query`);
}
}
};
exports.UrlGenerator = generator;
}).call(this);