Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | "use strict"; var util = require('util'); var extend = require("extend"); var moment = require("moment"); module.exports = function (data) { data = Object.assign({}, data); var bus = data.bus = data.bus || {}; var aws = data.aws = data.aws || {}; if (data.kinesis && !data.stream) { data.stream = data.kinesis; } if (data.s3 && !bus.s3) { bus.s3 = data.s3; } if (data.firehose && !bus.firehose) { bus.firehose = data.firehose; } if (!data.region) { data.region = aws.region || 'us-west-2'; } if (data.region && !aws.region) { aws.region = data.region; } delete data.kinesis; delete data.s3; delete data.fireshose; delete data.region; if (!data.domainName) { throw new Error("Field 'domainName' is required"); } else if (!data.domainName.match(/^https?:\/\//)) { data.domainName = "https://" + data.domainName; } return { subscribe: function (id, queue, data) { if (!id || !queue) { return Promise.reject("'id' and 'queue' are required"); } return this.bot.get(id).then(bot => { data = Object.assign({}, data, { id: id, triggers: Array.isArray(queue) ? queue : [queue], lambda: extend(true, (bot || {}).lambda, { settings: [{ source: queue }] }) }); if (!bot && !data.lambdaName) { data.lambdaName = id; } if (!bot) { var timestamp = moment.utc(); data.checkpoint = 'z' + timestamp.format('/YYYY/MM/DD/HH/mm/ss/'); } if (data.checkpoint && !data.checkpoint.match(/^z/)) { var c = data.checkpoint.match(/^\//) ? "" : "/"; data.checkpoint = "z" + c + data.checkpoint; } return this.bot.save(data); }); }, bot: require("./lib/apis/bot_api.js")(data) }; }; |