Started adding support for RSS campaigns
This commit is contained in:
parent
b0d36be790
commit
09103ac58b
8 changed files with 308 additions and 6 deletions
56
lib/feed.js
Normal file
56
lib/feed.js
Normal file
|
@ -0,0 +1,56 @@
|
|||
'use strict';
|
||||
|
||||
let FeedParser = require('feedparser');
|
||||
let request = require('request');
|
||||
|
||||
module.exports.fetch = (url, callback) => {
|
||||
let req = request(url);
|
||||
let feedparser = new FeedParser();
|
||||
let returned = false;
|
||||
|
||||
req.setHeader('user-agent', 'Mailtrain');
|
||||
req.setHeader('accept', 'text/html,application/xhtml+xml');
|
||||
|
||||
req.on('error', err => {
|
||||
if (returned) {
|
||||
return;
|
||||
}
|
||||
returned = true;
|
||||
callback(err);
|
||||
});
|
||||
|
||||
req.on('response', res => {
|
||||
if (returned) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (res.statusCode !== 200) {
|
||||
return req.emit('error', new Error('Bad status code'));
|
||||
}
|
||||
|
||||
req.pipe(feedparser);
|
||||
});
|
||||
|
||||
feedparser.on('error', err => {
|
||||
if (returned) {
|
||||
return;
|
||||
}
|
||||
returned = true;
|
||||
callback(err);
|
||||
});
|
||||
|
||||
feedparser.on('readable', () => {
|
||||
// This is where the action is!
|
||||
let meta = feedparser.meta;
|
||||
let item;
|
||||
|
||||
while ((item = feedparser.read())) {
|
||||
//console.log(require('util').inspect(item, false, 22));
|
||||
console.log(item.title);
|
||||
console.log(item.description || item.summary);
|
||||
console.log('--------');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.fetch('https://andris9.wordpress.com/feed/', console.log);
|
|
@ -200,6 +200,15 @@ module.exports.create = (campaign, callback) => {
|
|||
campaign.segment = 0;
|
||||
}
|
||||
|
||||
switch ((campaign.type || '').toString().trim().toLowerCase()) {
|
||||
case 'rss':
|
||||
campaign.type = 2;
|
||||
break;
|
||||
case 'normal':
|
||||
default:
|
||||
campaign.type = 1;
|
||||
}
|
||||
|
||||
campaign.template = Number(campaign.template) || 0;
|
||||
|
||||
if (!name) {
|
||||
|
@ -261,7 +270,9 @@ module.exports.create = (campaign, callback) => {
|
|||
});
|
||||
};
|
||||
|
||||
if (campaign.template) {
|
||||
if (campaign.type === 2) {
|
||||
create();
|
||||
} else if (campaign.template) {
|
||||
templates.get(campaign.template, (err, template) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue