feat(rss): add new items in feed trigger

This commit is contained in:
Ali BARIN
2022-10-26 22:18:07 +02:00
parent 7d7c96274d
commit 419d84da97
10 changed files with 107 additions and 12 deletions

View File

@@ -0,0 +1,33 @@
import defineTrigger from '../../../../helpers/define-trigger';
import newItemsInFeed from './new-items-in-feed';
export default defineTrigger({
name: 'New items in feed',
key: 'newItemsInFeed',
description: 'Triggers on new RSS feed items.',
pollInterval: 15,
substeps: [
{
key: 'chooseTrigger',
name: 'Set up trigger',
arguments: [
{
label: 'Feed URL',
key: 'feedUrl',
type: 'string',
required: true,
description: 'Paste your publicly accessible RSS URL here.',
variables: false,
},
],
},
{
key: 'testStep',
name: 'Test trigger',
},
],
async run($) {
await newItemsInFeed($);
},
});

View File

@@ -0,0 +1,24 @@
import { IGlobalVariable } from '@automatisch/types';
import { XMLParser } from 'fast-xml-parser';[]
const newItemsInFeed = async ($: IGlobalVariable) => {
const { data } = await $.http.get($.step.parameters.feedUrl as string);
const parser = new XMLParser();
const parsedData = parser.parse(data);
for (const item of parsedData.rss.channel.item) {
if ($.flow.isAlreadyProcessed(item.guid))
return;
const dataItem = {
raw: item,
meta: {
internalId: item.guid
}
}
$.pushTriggerItem(dataItem);
}
};
export default newItemsInFeed;