UNPKG

dc-management-sdk-js

Version:
221 lines 14.3 kB
import { DefaultHalClient } from './hal/services/HalClient'; import { AxiosHttpClient } from './http/AxiosHttpClient'; import { ContentItem } from './model/ContentItem'; import { ContentRepository } from './model/ContentRepository'; import { ContentType } from './model/ContentType'; import { ContentTypeSchema } from './model/ContentTypeSchema'; import { Edition } from './model/Edition'; import { Event } from './model/Event'; import { Folder } from './model/Folder'; import { Hub, HubsPage } from './model/Hub'; import { Snapshot } from './model/Snapshot'; import { Oauth2AuthHeaderProvider } from './oauth2/services/Oauth2AuthHeaderProvider'; import { HierarchyParents } from './model/HierarchyParents'; import { HierarchyChildren } from './model/HierarchyChildren'; import { WorkflowState } from './model/WorkflowState'; import { Extension } from './model/Extension'; import { PatTokenAuthHeaderProvider } from './auth/PatTokenAuthHeaderProvider'; /** * Amplience Dynamic Content API client. * * Your application should avoid where possible creating a new client for each request. * Authentication tokens are cached by the client and only re-requested when * they expire, allowing performance to be improved by reusing the client across requests. * * If multiple sets of credentials are required your application should create one client * per credential set. * * Example: * * ```typescript * const client = new DynamicContent({ * client_id: process.env.CLIENT_ID, * client_secret: process.env.CLIENT_SECRET * }); * * const repository = await client.contentRepositories.get('<REPO-ID>'); * * const contentItem = new ContentItem(); * contentItem.label = 'Homepage Article'; * contentItem.body = { * _meta: { * schema: "https://github.com/techiedarren/dc-examples/blob/master/content-types/blocks/text-block.json" * }, * paragraphs: [ * "Example article text..." * ] * }; * * await repository.related.contentItems.create(contentItem); * ``` */ export class DynamicContent { /** * Creates a Dynamic Content API client instance. You must provide credentials that will * be used to authenticate with the API. * * @param clientCredentials Api credentials used to generate an authentication token * @param dcConfig Optional configuration settings for Dynamic Content * @param httpClient Optional request settings, can be used to provide proxy settings, add interceptors etc */ constructor(authCredentials, dcConfig, httpClient) { /** * Hub Resources */ this.hubs = { /** * Retrieve a hub resource by id * @param id hub id, previously generated on creation */ get: (id) => this.client.fetchResource(`/hubs/${id}`, Hub), /** * Retrieve a list of hub resources shared with your client credentials. * @param options Pagination options */ list: (options) => this.client.fetchLinkedResource({ href: '/hubs{?page,size}', templated: true }, options, HubsPage), }; this.contentTypeSchemas = { /** * Gets a content type schemas * @param id ContentTypeSchema id */ get: (id) => this.client.fetchResource(`/content-type-schemas/${id}`, ContentTypeSchema), /** * Gets a content type schemas * @param id ContentTypeSchema id * @param version Version */ getByVersion: (id, version) => this.client.fetchResource(`/content-type-schemas/${id}/${version}`, ContentTypeSchema), }; /** * Content Repository Resources */ this.contentRepositories = { /** * Retrieve a content repository resource by id * @param id content repository id, previously generated on creation */ get: (id) => this.client.fetchResource(`/content-repositories/${id}`, ContentRepository), }; /** * Hierarchy Resources */ this.hierarchies = { parents: { /** * Retrieve parents of the associated content item * @param id content item id accociated content item */ get: (id) => this.client.fetchResource(`/hierarchy-node/${id}/parents`, HierarchyParents), }, children: { /** * Retrieve children of the associated content item * @param id content item id accociated content item */ get: (id) => this.client.fetchResource(`/hierarchy-node/${id}/children`, HierarchyChildren), }, }; /** * Content Item Resources */ this.contentItems = { /** * Retrieve a content item resource by id * @param id content item id, previously generated on creation */ get: (id) => this.client.fetchResource(`/content-items/${id}`, ContentItem), }; /** * Content Type Resources */ this.contentTypes = { /** * Retrieve a content type resource by id * @param id content type id, previously generated on creation */ get: (id) => this.client.fetchResource(`/content-types/${id}`, ContentType), }; this.folders = { /** * Retrieve a folder resource by id * @param id folder id, previously generated on creation */ get: (id) => this.client.fetchResource(`/folders/${id}`, Folder), }; /** * Snapshot Resources */ this.snapshots = { /** * Retrieve a snapshot resource by id * @param id snapshot id, previously generated on creation */ get: (id) => this.client.fetchResource(`/snapshots/${id}`, Snapshot), }; /** * Event Resources */ this.events = { /** * Retrieve an event resource by id * @param id event id, previously generated on creation */ get: (id) => this.client.fetchResource(`/events/${id}`, Event), }; /** * Edition Resources */ this.editions = { /** * Retrieve an edition resource by id * @param id edition id, previously generated on creation */ get: (id) => this.client.fetchResource(`/editions/${id}`, Edition), }; /** * Extension Resources */ this.extensions = { /** * Retrieve an extension resource by id * @param id extension id, previously generated on creation */ get: (id) => this.client.fetchResource(`/extensions/${id}`, Extension), }; /** * Workflow States */ this.workflowStates = { /** * Retrieve a Workflow State by id * @param id of Workflow State, previously generated on creation */ get: (id) => this.client.fetchResource(`/workflow-states/${id}`, WorkflowState), }; dcConfig = dcConfig || {}; dcConfig.apiUrl = dcConfig.apiUrl || 'https://api.amplience.net/v2/content'; dcConfig.authUrl = dcConfig.authUrl || 'https://auth.amplience.net'; let httpClientInstance; if (httpClient !== undefined && 'request' in httpClient) { httpClientInstance = httpClient; } else { httpClientInstance = new AxiosHttpClient(httpClient === undefined ? {} : httpClient); } const tokenClient = this.createTokenClient(dcConfig, authCredentials, httpClientInstance); this.client = this.createResourceClient(dcConfig, tokenClient, httpClientInstance); } createTokenClient(dcConfig, authCredentials, httpClient) { if (authCredentials.patToken) { return new PatTokenAuthHeaderProvider(authCredentials.patToken); } return new Oauth2AuthHeaderProvider(authCredentials, { authUrl: dcConfig.authUrl, }, httpClient); } createResourceClient(dcConfig, tokenProvider, httpClient) { return new DefaultHalClient(dcConfig.apiUrl, httpClient, tokenProvider); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY0NvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL0R5bmFtaWNDb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUc1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQXFCL0U7Ozs7Ozs7Ozs7Ozs7Ozs7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