Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. "use strict";
  2.  
  3. const AWS_REGION = process.env.AWS_REGION;
  4.  
  5. const Promise = require("bluebird");
  6. const AWS = require("aws-sdk");
  7. const eventUtils = require("./eventUtils.js");
  8.  
  9. AWS.config.update({ region: AWS_REGION });
  10. AWS.config.setPromisesDependency(Promise);
  11.  
  12. class Dispatcher {
  13. constructor() {
  14. this.PUBLISHED_QUEUE_URL = process.env.PUBLISHED_QUEUE_URL;
  15. this.AWS_ACCOUNTID = process.env.AWS_ACCOUNTID;
  16. this.sns = undefined;
  17. this.sqs = undefined;
  18. }
  19.  
  20. init() {
  21. this.sns = new AWS.SNS();
  22. this.sqs = new AWS.SQS();
  23. }
  24.  
  25. //--------------------------------------------------------
  26. // --- Dispatches the event to the topic corresponding to it's type
  27. //--------------------------------------------------------
  28. dispatchEvent(event, topic) {
  29. var params = {
  30. TopicArn:
  31. "arn:aws:sns:" + AWS_REGION + ":" + this.AWS_ACCOUNTID + ":" + topic,
  32. Subject: event.eventType,
  33. Message: eventUtils.stringify(event)
  34. };
  35. return this.sns.publish(params).promise();
  36. }
  37.  
  38. //--------------------------------------------------------
  39. // --- Dispatches all the events
  40. //--------------------------------------------------------
  41. dispatchAll(events) {
  42. return Promise.all(
  43. events.map(() => this.dispatchEvent(event, event.eventType))
  44. );
  45. }
  46. }
  47.  
  48. exports.Dispatcher = Dispatcher;
  49.  
  50. //----------------------------
  51. // --- Handles the incoming event from SQS
  52. //----------------------------
  53. exports.handler = function(sqsEvent, context, callback) {
  54. let dispatcher = new Dispatcher();
  55. dispatcher.init();
  56. const events = sqsEvent.Records.filter(event =>
  57. eventUtils.getOriginal(JSON.parse(event.body))
  58. );
  59.  
  60. dispatcher
  61. .dispatchAll(events)
  62. .then(data => {
  63. callback(undefined, data);
  64. })
  65. .catch(callback);
  66. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement