Skip to main content

Class: RuntimeConfiguration

Allows you to get and set the user ID and PDF metadata of a product at runtime.

Constructors

Constructor

new RuntimeConfiguration(postMessageClient): RuntimeConfiguration

Parameters

postMessageClient

Client

Returns

RuntimeConfiguration

Methods

getPdfMetadata()

getPdfMetadata(): Promise<IPdfMetadata>

Reads PDF metadata of the current product.

Returns

Promise<IPdfMetadata>

The IPdfMetadata structure with data to be saved in the hi-res output.

Example

const data = await editor.configuration.getPdfMetadata()
.catch(error => console.error("Retrieving PDF metadata failed with exception: ", error));

console.info("getPdfMetadata returned: " + data.title);

setPdfMetadata()

setPdfMetadata(config): Promise<void>

Sets PDF metadata to the current product.

Parameters

config

IPdfMetadata

PDF metadata to be saved in the hi-res output.

Returns

Promise<void>

Example

editor.configuration.setPdfMetadata({
author: "John Wood",
title: "Postcard template with flowers",
keywords: "red,flower,postcard"
})
.catch(error => console.error("setPdfMetadata failed with exception: ", error));

getUserId()

getUserId(): Promise<string>

Reads ID of the user working on the product.

Returns

Promise<string>

The user identifier.

Example

let editor = await CustomersCanvas.IframeApi.loadEditor(iframe, productDefinition, config);
console.log(await editor.configuration.getUserId());

getImageMetadata()

getImageMetadata(url, fromDesignImages?): Promise<ImageMetaData>

Loads metadata of an image.

Parameters

url

string

The link to the image.

fromDesignImages?

boolean

If true, gets metadata from the design gallery.

Returns

Promise<ImageMetaData>

Image properties.

Example

// Get metadata of an image in the public gallery.
const metaData = await editor.configuration.getImageMetadata("public:backgrounds/azure.jpg");

setUserId()

setUserId(userId): Promise<void>

Sets a new user identifier and moves user files to this user's folders.

Parameters

userId

string

The new user identifier that needs to be set for the product.

Returns

Promise<void>

Remarks

Before using this method, you must enable the secure mode and update an authentication token by using the additionalUserId parameter with the new user identifier.

Example

<html>
<head>
<title>Setting a new user ID</title>
<!-- The IFrame API script. IMPORTANT! Do not remove or change the ID. -->
<script id="CcIframeApiScript" type="text/javascript" src="https://example.com/Resources/Generated/IframeApi.js">
</script>
</head>
<body>
<!-- The iframe to display the editor in. -->
<iframe id="editorFrame" width="100%" height="800px"></iframe>
<input type="button" value="Set User ID" onclick="setUserID()" />

<script>
let editor = null;

document.addEventListener('DOMContentLoaded', async () => {
// Initialize product with an Invitation template.
const productDefinition = { surfaces: ["invitation"] };
// Get the iframe element to display the editor in.
const iframe = document.getElementById("editorFrame");
// Load the editor.
editor = await CustomersCanvas.IframeApi.loadEditor(iframe, productDefinition)
// If there was an error thrown when loading the editor.
.catch(e => console.log(e));
});

// Set JohnWood as a new user ID.
async function setUserID() {
let userId = await editor.configuration.getUserId();
// Get an active token for the current user.
let token = (await (await fetch("https://example.com/api/Auth/Users/" + userId + "/Tokens",
{
method: "GET",
headers: { "X-CustomersCanvasAPIKey": "UniqueSecurityKey" }
})).json()).tokens[0].tokenId;

// Update the token for another user.
await fetch("https://example.com/api/Auth/Tokens/" + token + "?AdditionalUserId=JohnWood", {
method: "PUT",
headers: { "X-CustomersCanvasAPIKey": "UniqueSecurityKey" }
});

// Copy user files.
editor.configuration.setUserId("JohnWood")
.catch(e => console.log(e));
}
</script>
</body>
</html>
Was this page helpful?