Merge branch 'pull/763' into development

This commit is contained in:
Tomas Bures 2019-12-07 08:24:34 +01:00
commit e61e0fb802
2 changed files with 39 additions and 12 deletions

View file

@ -14,7 +14,7 @@ const sendConfigurations = require('../models/send-configurations');
const links = require('../models/links'); const links = require('../models/links');
const {CampaignSource, CampaignType} = require('../../shared/campaigns'); const {CampaignSource, CampaignType} = require('../../shared/campaigns');
const {toNameTagLangauge} = require('../../shared/lists'); const {toNameTagLangauge} = require('../../shared/lists');
const {CampaignMessageStatus} = require('../../shared/campaigns'); const {CampaignMessageStatus, CampaignMessageErrorCode} = require('../../shared/campaigns');
const tools = require('./tools'); const tools = require('./tools');
const htmlToText = require('html-to-text'); const htmlToText = require('html-to-text');
const request = require('request-promise'); const request = require('request-promise');
@ -202,14 +202,26 @@ class MessageSender {
const sourceUrl = campaign.data.sourceUrl; const sourceUrl = campaign.data.sourceUrl;
const response = await request.post({ let response;
uri: sourceUrl, try {
form, response = await request.post({
resolveWithFullResponse: true uri: sourceUrl,
}); form,
resolveWithFullResponse: true
});
} catch (e) {
log.error('MessageSender', `Error pulling content from URL (${sourceUrl})`);
response = {statusCode: e.message};
}
if (response.statusCode !== 200) { if (response.statusCode !== 200) {
throw new Error(`Received status code ${httpResponse.statusCode} from ${sourceUrl}`); const statusError = new Error(`Received status code ${response.statusCode} from ${sourceUrl}`);
if (response.statusCode >= 500) {
statusError.code = CampaignMessageErrorCode.RETRY;
} else {
statusError.code = CampaignMessageErrorCode.NORETRY;
}
throw statusError;
} }
html = response.body; html = response.body;
@ -504,13 +516,21 @@ class MessageSender {
try { try {
result = await this._sendMessage({listId: campaignMessage.list, subscriptionId: campaignMessage.subscription}); result = await this._sendMessage({listId: campaignMessage.list, subscriptionId: campaignMessage.subscription});
} catch (err) { } catch (err) {
await knex('campaign_messages') if (err.code === CampaignMessageErrorCode.NORETRY) {
await knex('campaign_messages')
.where({id: campaignMessage.id})
.update({
status: CampaignMessageStatus.FAILED,
updated: new Date()
});
} else {
await knex('campaign_messages')
.where({id: campaignMessage.id}) .where({id: campaignMessage.id})
.update({ .update({
status: CampaignMessageStatus.SCHEDULED, status: CampaignMessageStatus.SCHEDULED,
updated: new Date() updated: new Date()
}); });
}
throw err; throw err;
} }
@ -755,4 +775,4 @@ module.exports.queueCampaignMessageTx = queueCampaignMessageTx;
module.exports.queueSubscriptionMessage = queueSubscriptionMessage; module.exports.queueSubscriptionMessage = queueSubscriptionMessage;
module.exports.dropQueuedMessage = dropQueuedMessage; module.exports.dropQueuedMessage = dropQueuedMessage;
module.exports.getMessage = getMessage; module.exports.getMessage = getMessage;
module.exports.queueAPITransactionalMessage = queueAPITransactionalMessage; module.exports.queueAPITransactionalMessage = queueAPITransactionalMessage;

View file

@ -53,7 +53,13 @@ const CampaignMessageStatus = {
COMPLAINED: 4, COMPLAINED: 4,
SCHEDULED: 5, SCHEDULED: 5,
MAX: 5 MAX: 5,
FAILED: 6
};
const CampaignMessageErrorCode = {
RETRY: 0,
NORETRY: 1
}; };
@ -90,5 +96,6 @@ module.exports = {
CampaignStatus, CampaignStatus,
campaignOverridables, campaignOverridables,
CampaignMessageStatus, CampaignMessageStatus,
CampaignMessageErrorCode,
getSendConfigurationPermissionRequiredForSend getSendConfigurationPermissionRequiredForSend
}; };