UNPKG

paradigm-facebook-ia

Version:
105 lines (78 loc) 2.56 kB
const Job = require('structure-job') const {ApplicationModel} = require('structure-applications') const FacebookIAAPI = require('../lib/facebook-ia-api') class CheckImportJob extends Job { constructor(options = {}) { super(Object.assign({}, { label: 'Check Facebook Instant Article Import', priority: 'high', numRetries: 60, // Keep checking for up to one hour table: 'jobs_check_instant_article_article_import' }, options)) this.applicationId = options.applicationId this.logger = options.logger || console if(!this.logger.debug) { this.logger.debug = console.log.bind(console) } this.organizationId = options.organizationId } async handler(job) { try { this.logger.debug( 'Checking facebook instant article import', {data: job.data} ) const applicationModel = new ApplicationModel({ organizationId: this.organizationId, logger: this.logger, }) const app = await applicationModel.getById(this.applicationId) const FacebookInstantArticleModel = require('../models/facebook-instant-article') const facebookInstantArticleModel = new FacebookInstantArticleModel({ organizationId: this.organizationId, applicationId: this.applicationId, logger: this.logger }) const client = new FacebookIAAPI( app.facebook.pageId, app.facebook.pageAccessToken ) 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 = CheckImportJob