contensis-delivery-api
Version:
Client for retrieving content using the read-only Contensis Delivery API
70 lines (69 loc) • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TaxonomyOperations = void 0;
const contensis_core_api_1 = require("contensis-core-api");
let taxonomyMappers = {
order: (value) => (value === 'defined') ? value : null
};
class TaxonomyOperations {
constructor(httpClient, contensisClient) {
this.httpClient = httpClient;
this.contensisClient = contensisClient;
}
getNodeByKey(key) {
let url = contensis_core_api_1.UrlBuilder.create('/api/delivery/projects/:projectId/taxonomy/nodes/:key', { order: null, childDepth: null, language: null })
.addOptions(key, 'key')
.setParams(this.contensisClient.getParams())
.addMappers(taxonomyMappers)
.toUrl();
return this.contensisClient.ensureIsAuthorized().then(() => {
return this.httpClient.request(url, {
headers: this.contensisClient.getHeaders()
});
});
}
getNodeByPath(path) {
let url = contensis_core_api_1.UrlBuilder.create('/api/delivery/projects/:projectId/taxonomy/nodes', { order: null, childDepth: null, language: null, path: null })
.addOptions(path, 'path')
.setParams(this.contensisClient.getParams())
.addMappers(taxonomyMappers)
.toUrl();
return this.contensisClient.ensureIsAuthorized().then(() => {
return this.httpClient.request(url, {
headers: this.contensisClient.getHeaders()
});
});
}
resolveChildren(node) {
let resolveOptions = node;
let taxonomyNodeOrKey = null;
let getNodeByKeyOptions = { childDepth: 1 };
if (resolveOptions.node) {
taxonomyNodeOrKey = resolveOptions.node;
getNodeByKeyOptions = { childDepth: resolveOptions.childDepth || 1, order: resolveOptions.order, language: resolveOptions.language };
}
else if (resolveOptions.key) {
if (node.path) {
taxonomyNodeOrKey = node;
}
else {
taxonomyNodeOrKey = resolveOptions.key;
getNodeByKeyOptions = { childDepth: resolveOptions.childDepth || 1, order: resolveOptions.order, language: resolveOptions.language };
}
}
else {
taxonomyNodeOrKey = node;
}
if (typeof taxonomyNodeOrKey === 'string') {
return this.getNodeByKey(Object.assign(Object.assign({}, getNodeByKeyOptions), { key: taxonomyNodeOrKey }));
}
if (!taxonomyNodeOrKey.hasChildren) {
return Promise.resolve(Object.assign(Object.assign({}, taxonomyNodeOrKey), { children: [] }));
}
else if (taxonomyNodeOrKey.children && (taxonomyNodeOrKey.children.length > 0)) {
return Promise.resolve(Object.assign({}, taxonomyNodeOrKey));
}
return this.getNodeByKey(Object.assign(Object.assign({}, getNodeByKeyOptions), { key: taxonomyNodeOrKey.key }));
}
}
exports.TaxonomyOperations = TaxonomyOperations;