UNPKG

contensis-management-api

Version:

Client for managing content using the Contensis Management API

97 lines (80 loc) 3.26 kB
import { ContensisClient, IProjectOperations } from '../models'; import { IHttpClient, Project, UrlBuilder } from 'contensis-core-api'; export class ProjectOperations implements IProjectOperations { constructor(private httpClient: IHttpClient, private contensisClient: ContensisClient) { } get(id: string = null): Promise<Project> { let url = UrlBuilder.create('/api/management/projects/:projectId') .addOptions(id, 'projectId') .setParams(this.contensisClient.getParams()) .toUrl(); return this.contensisClient.ensureBearerToken().then(() => { return this.httpClient.request<Project>(url, { headers: this.contensisClient.getHeaders() }); }); } list(): Promise<Project[]> { let url = UrlBuilder.create('/api/management/projects', {}) .setParams(this.contensisClient.getParams()) .toUrl(); return this.contensisClient.ensureBearerToken().then(() => { return this.httpClient.request<Project[]>(url, { headers: this.contensisClient.getHeaders() }); }); } create(project: Project): Promise<Project> { if (!project) { throw new Error('A valid project needs to be specified.'); } let url = UrlBuilder.create('/api/management/projects', {}) .setParams(this.contensisClient.getParams()) .toUrl(); return this.contensisClient.ensureBearerToken().then(() => { return this.httpClient.request<Project>(url, { headers: this.contensisClient.getHeaders(), method: 'POST', body: JSON.stringify(project) }); }); } update(project: Project): Promise<Project> { if (!project) { throw new Error('A valid project needs to be specified.'); } if (!project.id) { throw new Error('A valid project id value needs to be specified.'); } let url = UrlBuilder.create('/api/management/projects/:id', {}) .addOptions(project.id, 'id') .setParams(this.contensisClient.getParams()) .toUrl(); return this.contensisClient.ensureBearerToken().then(() => { return this.httpClient.request<Project>(url, { headers: this.contensisClient.getHeaders(), method: 'PUT', body: JSON.stringify(project) }); }); } delete(id: string): Promise<void> { if (!id) { throw new Error('A valid id needs to be specified.'); } let url = UrlBuilder.create('/api/management/projects/:id', {}) .addOptions(id, 'id') .setParams(this.contensisClient.getParams()) .toUrl(); return this.contensisClient.ensureBearerToken().then(() => { return this.httpClient.request<void>(url, { headers: this.contensisClient.getHeaders(), method: 'DELETE' }); }); } }