diff --git a/src/config.ts b/src/config.ts index f2e7aef0e90a2c214ce0957a80a2351ad9bad34c..bb6d0d4f5d5ec2261c8045e3a1a43e4dab52457b 100644 --- a/src/config.ts +++ b/src/config.ts @@ -3,10 +3,12 @@ export var config: { apiPassword: string feedUrl: string interval: number - listmonkBaseUrl: string + listmonkBaseUrl: string, + sendMails: boolean } export function parseConfig() { + console.log("Parsing config") config = { apiUser: parseEnvironmentVariable('LISTMONK_API_USER'), apiPassword: parseEnvironmentVariable('LISTMONK_API_PASSWORD'), @@ -14,12 +16,14 @@ export function parseConfig() { interval: Number.parseInt( parseEnvironmentVariable('LISTMONK_CHECK_INTERVAL') ), - listmonkBaseUrl: parseEnvironmentVariable('LISTMONK_BASE_URL') + listmonkBaseUrl: parseEnvironmentVariable('LISTMONK_BASE_URL'), + sendMails: parseEnvironmentVariable('LISTMONK_SEND_MAILS') === 'true', } if (Number.isNaN(config.interval)) { console.error('LISTMONK_CHECK_INTERVAL must be a number') process.exit(1) } + console.log("Config successfully parsed") } function parseEnvironmentVariable(variableName: string): string { diff --git a/src/index.ts b/src/index.ts index 3fd78a629ec1168be2a54f1181e4ca06886a4a6d..43108364b8768a8e39a5d59bd971e91e214ac534 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,24 +9,34 @@ import cron from 'node-cron' import { config, parseConfig } from './config' async function processRssItem(rssItem: FeedItem, campaigns: CampaignDetails[]) { + console.log(`Processing RSS item ${rssItem.title} (GUID: ${rssItem.guid})`) const campaign = campaigns.find( (campaign) => campaign.tags.find((tag) => tag === `id:${rssItem.guid}`) !== undefined ) if (campaign !== undefined) { + console.log(`Campaign for GUID ${rssItem.guid} already exists`) return } - console.log(`"${rssItem.title}" doesn't exist.`) + console.log(`Creating campaign for GUID ${rssItem.guid}`) const details = await createCampaign( rssItem.title, rssItem.guid, rssItem.content ) - await startCampaign(details.id) + if (config.sendMails) { + console.log(`Starting campaign for GUID ${rssItem.guid}`) + await startCampaign(details.id) + } + else { + console.log('Sending mails is disabled') + } + } function main() { ;(async () => { + console.log("Starting main loop") const campaigns = await listCampaigns() const rssItems = await readRssFeed() diff --git a/src/listmonk.ts b/src/listmonk.ts index 42b32fcd42a335b2dbc99abda8bc320bdf4b5e15..f716472a9fe70a0f4d7c87aa0f69e929d6bd3ea2 100644 --- a/src/listmonk.ts +++ b/src/listmonk.ts @@ -92,12 +92,17 @@ export interface CampaignListResponse { } export async function listCampaigns(): Promise<CampaignListResponse> { - console.log('Fetch campaigns') + console.log('Fetching campaigns') const response = await listmonkRequest<CampaignListResponse>( 'get', 'campaigns?per_page=skip', undefined ) - console.log(`Found ${response.total} campaigns`) + console.log(`Campaign array has length ${response.results.length}`) + console.log(`Response says we should have ${response.total} total campaigns`) + if (response.results.length !== response.total) { + console.log('ERROR: Campaign array has different length than response total') + process.exit(1); + } return response }