first actually working version of RSS campaigns

This commit is contained in:
Andris Reinman 2016-05-03 14:04:46 +03:00
parent fd0e75da27
commit c031ea7747
7 changed files with 187 additions and 22 deletions

View file

@ -199,11 +199,13 @@ module.exports.get = (id, withSegment, callback) => {
});
};
module.exports.create = (campaign, callback) => {
module.exports.create = (campaign, opts, callback) => {
campaign = tools.convertKeys(campaign);
let name = (campaign.name || '').toString().trim();
opts = opts || {};
if (/^\d+:\d+$/.test(campaign.list)) {
campaign.segment = Number(campaign.list.split(':').pop());
campaign.list = Number(campaign.list.split(':').shift());
@ -216,6 +218,13 @@ module.exports.create = (campaign, callback) => {
case 'rss':
campaign.type = 2;
break;
case 'entry':
if (opts.parent) {
campaign.type = 3;
} else {
campaign.type = 1;
}
break;
case 'normal':
default:
campaign.type = 1;
@ -227,8 +236,8 @@ module.exports.create = (campaign, callback) => {
return callback(new Error('Campaign Name must be set'));
}
if (campaign.type === 2 && !campaign.sourceUrl || !isUrl(campaign.sourceUrl)) {
return callback(new Error('RSS URL must be set'));
if (campaign.type === 2 && (!campaign.sourceUrl || !isUrl(campaign.sourceUrl))) {
return callback(new Error('RSS URL must be set and needs to be a valid URL'));
}
lists.get(campaign.list, (err, list) => {
@ -247,6 +256,11 @@ module.exports.create = (campaign, callback) => {
values.push(5); // inactive
}
if (campaign.type === 3) {
keys.push('status', 'parent');
values.push(2, opts.parent);
}
let create = next => {
Object.keys(campaign).forEach(key => {
let value = typeof campaign[key] === 'number' ? campaign[key] : (campaign[key] || '').toString().trim();