dc-management-sdk-js
Version:
Amplience Dynamic Content Management SDK
179 lines • 11.5 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.HalResource = void 0;
var HttpRequest_1 = require("../../http/HttpRequest");
/**
* Base class for all Resources
*/
var HalResource = /** @class */ (function () {
/**
* Creates a new instance of the resource.
* If data is provided it will be parsed as if it had
* come from the remote api.
* @param data
*/
function HalResource(data) {
if (data) {
this.parse(data);
}
}
/**
* Parses the data returned by the API into the model class
* @hidden
*/
HalResource.prototype.parse = function (data) {
Object.assign(this, data);
};
/**
* Returns a copy of this resource's attributes excluding links and client references
*/
HalResource.prototype.toJSON = function () {
var result = Object.assign({}, this);
delete result.client;
delete result._links;
delete result.related;
return result;
};
/**
* Returns a copy of this resource's attributes excluding links and client references
* @deprecated
*/
HalResource.prototype.toJson = function () {
return this.toJSON();
};
/**
* Set automatically by the HalClient when the resource is created.
* If this is not set the resource will be unable to resolve related
* resources and actions.
*
* @hidden
*/
HalResource.prototype.setClient = function (client) {
this.client = client;
};
/**
* Converts an _embedded collection into an Array of
* Resource instances.
* @hidden
*/
HalResource.prototype.parseEmbedded = function (name, resourceConstructor) {
var _this = this;
if (this._embedded[name]) {
return this._embedded[name].map(function (x) {
return _this.client.parse(x, resourceConstructor);
});
}
else {
return [];
}
};
/**
* GET a linked resource
* @hidden
*/
HalResource.prototype.fetchLinkedResource = function (name, params, resourceConstructor) {
return this.withHalLink(name).then(function (_a) {
var link = _a[0], client = _a[1];
return client.fetchLinkedResource(link, params, resourceConstructor);
});
};
/**
* POST / CREATE a new resource
* @hidden
*/
HalResource.prototype.createLinkedResource = function (name, params, resource, resourceConstructor) {
return this.withHalLink(name).then(function (_a) {
var link = _a[0], client = _a[1];
return client.createLinkedResource(link, params, resource, resourceConstructor);
});
};
/**
* POST to an action endpoint and get a resource response
* @hidden
*/
HalResource.prototype.performActionThatReturnsResource = function (name, params, data, resourceConstructor, method) {
if (method === void 0) { method = HttpRequest_1.HttpMethod.POST; }
return this.withHalLink(name).then(function (_a) {
var link = _a[0], client = _a[1];
return client.performActionThatReturnsResource(link, params, data, resourceConstructor, method);
});
};
/**
* POST to an action endpoint with no resource response returned.
*/
HalResource.prototype.performActionWithoutResourceResponse = function (name, params, data, method) {
if (method === void 0) { method = HttpRequest_1.HttpMethod.POST; }
return this.withHalLink(name).then(function (_a) {
var link = _a[0], client = _a[1];
return client.performActionWithoutResourceResponse(link, params, data, method);
});
};
/**
* DELETE the current resource
* @hidden
*/
HalResource.prototype.deleteResource = function () {
return this.deleteLinkedResource('delete', {});
};
/**
* DELETE a linked resource
* @hidden
*/
HalResource.prototype.deleteLinkedResource = function (name, params) {
return this.withHalLink(name).then(function (_a) {
var link = _a[0], client = _a[1];
return client.deleteLinkedResource(link, params);
});
};
/**
* PATCH the current resource
* @hidden
*/
HalResource.prototype.updateResource = function (resource, resourceConstructor, params) {
return this.updateLinkedResource('update', __assign({}, params), resource, resourceConstructor);
};
/**
* PATCH a linked resource
* @hidden
*/
HalResource.prototype.updateLinkedResource = function (name, params, resource, resourceConstructor) {
return this.withHalLink(name).then(function (_a) {
var link = _a[0], client = _a[1];
return client.updateLinkedResource(link, params, resource, resourceConstructor);
});
};
HalResource.prototype.withHalLink = function (name) {
if (!this.client) {
return Promise.reject(new Error('HalResource has no client'));
}
var link = this._links[name];
if (!link) {
return Promise.reject("The ".concat(name, " action is not available, ensure you have permission to perform this action."));
}
if (name === 'list-slots' && link.templated) {
// Work around an API bug where pagination params are not included for list-slots.
var toReplace = '{?includedSlots}';
var toReplaceWith = '{?includedSlots,page,size,sort}';
if (link.href.endsWith(toReplace)) {
link.href =
link.href.substr(0, link.href.length - toReplace.length) +
toReplaceWith;
}
}
return Promise.resolve([link, this.client]);
};
return HalResource;
}());
exports.HalResource = HalResource;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFsUmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2hhbC9tb2RlbHMvSGFsUmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBb0Q7QUFXcEQ7O0dBRUc7QUFDSDtJQWNFOzs7OztPQUtHO0lBQ0gscUJBQVksSUFBVTtRQUNwQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLDJCQUFLLEdBQVosVUFBYSxJQUFTO1FBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNJLDRCQUFNLEdBQWI7UUFDRSxJQUFNLE1BQU0sR0FBUSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDckIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksNEJBQU0sR0FBYjtRQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSwrQkFBUyxHQUFoQixVQUFpQixNQUFpQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLG1DQUFhLEdBQXZCLFVBQ0UsSUFBWSxFQUNaLG1CQUE4QztRQUZoRCxpQkFXQztRQVBDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pC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