dc-management-sdk-js
Version:
Amplience Dynamic Content Management SDK
130 lines • 10.6 kB
JavaScript
import { HttpError } from '../../http/HttpError';
import { HttpMethod } from '../../http/HttpRequest';
import { combineURLs } from '../../utils/URL';
import { CURIEs } from './CURIEs';
/**
* @hidden
*/
export class DefaultHalClient {
constructor(baseUrl, httpClient, authHeaderProvider) {
this.baseUrl = baseUrl;
this.httpClient = httpClient;
this.authHeaderProvider = authHeaderProvider;
}
async fetchLinkedResource(link, params, resourceConstructor) {
let href = link.href;
if (link.templated) {
href = CURIEs.expand(href, params);
}
return this.fetchResource(href, resourceConstructor);
}
async fetchResource(path, resourceConstructor) {
const response = await this.invoke({
method: HttpMethod.GET,
url: path,
});
return this.parse(response.data, resourceConstructor);
}
async createLinkedResource(link, params, resource, resourceConstructor) {
let href = link.href;
if (link.templated) {
href = CURIEs.expand(href, params);
}
return this.createResource(href, resource, resourceConstructor);
}
async createResource(path, resource, resourceConstructor) {
const response = await this.invoke({
data: this.serialize(resource),
method: HttpMethod.POST,
url: path,
});
return this.parse(response.data, resourceConstructor);
}
async updateResource(path, resource, resourceConstructor) {
const response = await this.invoke({
data: this.serialize(resource),
method: HttpMethod.PATCH,
url: path,
});
return this.parse(response.data, resourceConstructor);
}
async updateLinkedResource(link, params, resource, resourceConstructor) {
let href = link.href;
if (link.templated) {
href = CURIEs.expand(href, params);
}
return this.updateResource(href, resource, resourceConstructor);
}
async deleteLinkedResource(link, params) {
let href = link.href;
if (link.templated) {
href = CURIEs.expand(href, params);
}
return this.deleteResource(href);
}
async deleteResource(path) {
await this.invoke({
method: HttpMethod.DELETE,
url: path,
});
return Promise.resolve();
}
async performActionWithoutResourceResponse(link, params, data, method = HttpMethod.POST) {
let href = link.href;
if (link.templated) {
href = CURIEs.expand(href, params);
}
await this.invoke({
data: this.serialize(data),
method,
url: href,
});
return Promise.resolve();
}
async performActionThatReturnsResource(link, params, data, resourceConstructor, method = HttpMethod.POST) {
let href = link.href;
if (link.templated) {
href = CURIEs.expand(href, params);
}
const response = await this.invoke({
data: this.serialize(data),
method,
url: href,
});
return this.parse(response.data, resourceConstructor);
}
parse(data, resourceConstructor) {
const instance = new resourceConstructor(data);
instance.setClient(this);
return instance;
}
serialize(data) {
return JSON.parse(JSON.stringify(data));
}
async invoke(request) {
const authHeader = await this.authHeaderProvider.getAuthHeader();
const fullRequest = {
data: request.data,
headers: {
Authorization: authHeader,
},
method: request.method,
url: combineURLs(this.baseUrl, request.url),
};
return this.httpClient.request(fullRequest).then((response) => {
if (response.status === 204) {
return response;
}
if (response.status >= 200 && response.status < 300) {
if (typeof response.data === 'string') {
response.data = JSON.parse(response.data);
}
return response;
}
else {
throw new HttpError(`Request failed with status code ${response.status}: ${JSON.stringify(response.data)}`, fullRequest, response);
}
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFsQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9oYWwvc2VydmljZXMvSGFsQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFlLE1BQU0sd0JBQXdCLENBQUM7QUFHakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFzRWxDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUNVLE9BQWUsRUFDZixVQUFzQixFQUN0QixrQkFBc0M7UUFGdEMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUM3QyxDQUFDO0lBRUcsS0FBSyxDQUFDLG1CQUFtQixDQUM5QixJQUFhLEVBQ2IsTUFBVyxFQUNYLG1CQUE4QztRQUU5QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUN4QixJQUFZLEVBQ1osbUJBQThDO1FBRTlDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNqQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUc7WUFDdEIsR0FBRyxFQUFFLElBQUk7U0FDVixDQUFDLENB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