improvements

This commit is contained in:
ricardo 2020-05-05 19:36:12 -04:00
parent a80af661cc
commit b95a7e8ee8
2 changed files with 57 additions and 2 deletions

View file

@ -76,7 +76,7 @@ export class Bannerbear implements INodeType {
methods = {
loadOptions: {
// Get all the available escalation policies to display them to user so that he can
// Get all the available templates to display them to user so that he can
// select them easily
async getTemplates(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {
const returnData: INodePropertyOptions[] = [];
@ -91,6 +91,23 @@ export class Bannerbear implements INodeType {
}
return returnData;
},
// Get all the available modifications to display them to user so that he can
// select them easily
async getModificationNames(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {
const templateId = this.getCurrentNodeParameter('templateId');
const returnData: INodePropertyOptions[] = [];
const { available_modifications } = await bannerbearApiRequest.call(this, 'GET', `/templates/${templateId}`);
for (const modification of available_modifications) {
const modificationName = modification.name;
const modificationId = modification.name;
returnData.push({
name: modificationName,
value: modificationId,
});
}
return returnData;
},
},
};
@ -130,6 +147,30 @@ export class Bannerbear implements INodeType {
}
}
responseData = await bannerbearApiRequest.call(this, 'POST', '/images', body);
if (additionalFields.waitForImage && responseData.status !== 'completed') {
let maxIntents = 2;
const promise = (uid: string) => {
let data: IDataObject = {};
return new Promise((resolve, reject) => {
const timeout = setInterval(async () => {
if (!maxIntents) {
clearInterval(timeout);
reject(new Error('Image did not finish procesing after 2 intents'));
}
data = await bannerbearApiRequest.call(this, 'GET', `/images/${uid}`);
if (data.status === 'completed') {
clearInterval(timeout);
resolve(data);
}
maxIntents--;
}, 2000);
});
};
responseData = await promise(responseData.uid);
}
}
//https://developers.bannerbear.com/#get-a-specific-image
if (operation === 'get') {

View file

@ -88,6 +88,14 @@ export const imageFields = [
default: '',
description: 'A url to POST the Image object to upon rendering completed',
},
{
displayName: 'Wait for Image',
name: 'waitForImage',
type: 'boolean',
default: false,
description: `Wait for the image to be proccesed before returning.</br>
If after two tries the images is not ready an error will be thrown`,
},
],
},
{
@ -117,7 +125,13 @@ export const imageFields = [
{
displayName: 'Name',
name: 'name',
type: 'string',
type: 'options',
typeOptions: {
loadOptionsMethod: 'getModificationNames',
loadOptionsDependsOn: [
'templateId',
],
},
default: '',
description: 'The name of the item you want to change',
},