UNPKG

@speakr/speakr-module-services

Version:
72 lines (63 loc) 2.25 kB
'use strict'; const env = require('@speakr/speakr-module-services/env/'); const AWS = require('aws-sdk'); AWS.config = { accessKeyId: 'AKIAJHLLJJBKU5JC7ZVA', secretAccessKey: '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', region: 'us-east-1' }; module.exports = { lambdaPublish }; function lambdaPublish(submissions, message) { const lambdaPromises = submissions.map(sub => { const submission = sub.dataValues ? sub.dataValues : sub; return new Promise((resolve, reject) => { // don't publish submissions with an 'idea submission' initiative type (product) if (submission.initiative.product === "Idea Submission") return null; const username = submission.account.dataValues ? submission.account.dataValues.current_username : submission.account.current_username const publishPayload = { creative_id: submission.id, status_message: message }; const lambda = new AWS.Lambda({ apiVersion: '2015-03-31', logger: console, region: 'us-east-1', }); const params = { FunctionName: `faveme-lambda-publish-${process.env.NODE_ENV}-publish`, InvocationType: 'RequestResponse', Payload: JSON.stringify(publishPayload) }; return lambda.invoke(params, function(err, data) { if(err) { console.log('\n\nPublish lambda error:', err) return resolve(err); } else if(data) { console.log('>', data) const Payload = JSON.parse(data.Payload) || 'Error publishing creative.'; console.log('>>'. Payload) console.log(`\n\nPublish lambda status for creative ${publishPayload.creative_id}`, data.StatusCode, data.Payload); const pubResponse = { StatusCode: data.StatusCode, Payload: Payload, creative_id: submission.id, current_username: username }; if(data.Payload && Payload && Payload.errorMessage && submission.platform_id === 1 && (submission.content_type === 'image' || submission.content_type === 'video')) { pubResponse.speakrErrorMessage = Payload.errorMessage ? Payload.errorMessage : 'Probably a Twitter media error. Make sure your media matches Twitter\'s requirements.' } return resolve(pubResponse); } }); }) }); return Promise.all(lambdaPromises); }