UNPKG

paradigm-core

Version:
98 lines (72 loc) 2.26 kB
const {Queue, ApplicationsPlugin: {ApplicationModel}} = require('structure-core') const FacebookIAAPI = require('../lib/facebook-ia-api') class CheckImportQueue extends Queue { constructor(options = {}) { super({ label: 'facebook-ia--check-import', jobOpts: { // keep checking every minute for an hour attempts: 60, backoff: { type: 'fixed', delay: 60000, } } }) } async handler(job) { try { this.logger.debug( 'Checking facebook instant article import', {data: job.data} ) const applicationModel = new ApplicationModel({ organizationId: job.data.organizationId, logger: this.logger, }) const app = await applicationModel.getById(job.data.applicationId) const FacebookInstantArticleModel = require('../models/facebook-instant-article') const facebookInstantArticleModel = new FacebookInstantArticleModel({ organizationId: job.data.organizationId, applicationId: job.data.applicationId, logger: this.logger }) const client = new FacebookIAAPI(app) const res = await client.getArticleImportStatus(job.data.fbia.articleImportId) this.logger.debug('Facebook Instant Article import status', {res}) if (res.status === 'SUCCESS') { await facebookInstantArticleModel.updateById( job.data.fbia.id, { importStatus: 'success', articleId: res.instant_article.id, } ) } else if (res.status === 'FAILED') { await facebookInstantArticleModel.updateById( job.data.fbia.id, { importStatus: 'failed', errors: res.errors } ) } else { // Retry the job later this.logger.debug( 'Article not finished importing, throwing to retry', {data: job.data} ) throw 'Article not finished importing' } } catch(error) { this.logger.error( 'Failed to check facebook instant article import', { data: job.data, error } ) throw error } } } module.exports = new CheckImportQueue()