mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
🔀 Merge branch 'feature/bannerbear-extended' of https://github.com/RicardoE105/n8n into RicardoE105-feature/bannerbear-extended
This commit is contained in:
commit
adae987d46
|
@ -76,7 +76,7 @@ export class Bannerbear implements INodeType {
|
||||||
|
|
||||||
methods = {
|
methods = {
|
||||||
loadOptions: {
|
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
|
// select them easily
|
||||||
async getTemplates(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {
|
async getTemplates(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {
|
||||||
const returnData: INodePropertyOptions[] = [];
|
const returnData: INodePropertyOptions[] = [];
|
||||||
|
@ -91,6 +91,23 @@ export class Bannerbear implements INodeType {
|
||||||
}
|
}
|
||||||
return returnData;
|
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);
|
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
|
//https://developers.bannerbear.com/#get-a-specific-image
|
||||||
if (operation === 'get') {
|
if (operation === 'get') {
|
||||||
|
|
|
@ -88,6 +88,14 @@ export const imageFields = [
|
||||||
default: '',
|
default: '',
|
||||||
description: 'A url to POST the Image object to upon rendering completed',
|
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',
|
displayName: 'Name',
|
||||||
name: 'name',
|
name: 'name',
|
||||||
type: 'string',
|
type: 'options',
|
||||||
|
typeOptions: {
|
||||||
|
loadOptionsMethod: 'getModificationNames',
|
||||||
|
loadOptionsDependsOn: [
|
||||||
|
'templateId',
|
||||||
|
],
|
||||||
|
},
|
||||||
default: '',
|
default: '',
|
||||||
description: 'The name of the item you want to change',
|
description: 'The name of the item you want to change',
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue