@apipass/sqs-server 0.0.31 → 0.0.32-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,8 @@
1
1
  import * as SQS from 'aws-sdk/clients/sqs';
2
+ import * as S3 from 'aws-sdk/clients/s3';
2
3
  export interface SqsOptions {
3
4
  endpoint: string;
4
5
  sqs?: SQS;
6
+ s3?: S3;
5
7
  autoCreateQueue?: boolean;
6
8
  }
@@ -3,11 +3,14 @@ import { SqsOptions } from "./sqs-options.interface";
3
3
  export declare class SQSServer extends Server implements CustomTransportStrategy {
4
4
  private readonly options;
5
5
  private sqs;
6
+ private s3;
6
7
  private consumers;
7
8
  private registeredQueues;
8
9
  constructor(options: SqsOptions);
9
10
  listen(callback: () => any): any;
10
11
  private bindHandlers;
12
+ private readMessageFromPayloadS3Pointer;
13
+ private isS3Message;
11
14
  private createQueueIfNotExist;
12
15
  close(): any;
13
16
  }
package/lib/sqs-server.js CHANGED
@@ -25,12 +25,12 @@ const microservices_1 = require("@nestjs/microservices");
25
25
  const sqs_consumer_1 = require("sqs-consumer");
26
26
  const sqs_context_1 = require("./sqs-context");
27
27
  const aws = require("aws-sdk");
28
- const sqs = new aws.SQS({ region: 'us-east-1' });
29
28
  class SQSServer extends microservices_1.Server {
30
29
  constructor(options) {
31
30
  super();
32
31
  this.options = options;
33
32
  this.sqs = this.options.sqs || new aws.SQS();
33
+ this.s3 = this.options.s3 || new aws.S3();
34
34
  this.consumers = [];
35
35
  this.registeredQueues = [];
36
36
  }
@@ -39,7 +39,14 @@ class SQSServer extends microservices_1.Server {
39
39
  callback();
40
40
  }
41
41
  bindHandlers() {
42
- this.messageHandlers.forEach((handler, queueName) => {
42
+ this.messageHandlers.forEach((handlerMetadata, queueName) => {
43
+ var _a;
44
+ const handler = handlerMetadata['callback'];
45
+ console.log('handler:', JSON.stringify(handler));
46
+ const extras = (_a = handlerMetadata.extras) !== null && _a !== void 0 ? _a : {};
47
+ console.log('extras:', JSON.stringify(handler));
48
+ const acceptedTopics = Array.isArray(extras.topic) ? extras.topic : [];
49
+ console.log('acceptedTopics:', JSON.stringify(acceptedTopics));
43
50
  this.createQueueIfNotExist(queueName, this.options);
44
51
  const queueAlreadyRegistered = this.registeredQueues.includes(queueName);
45
52
  if (queueAlreadyRegistered)
@@ -48,9 +55,21 @@ class SQSServer extends microservices_1.Server {
48
55
  sqs: this.sqs,
49
56
  queueUrl: `${this.options.endpoint}/${queueName}`,
50
57
  handleMessage: (message) => __awaiter(this, void 0, void 0, function* () {
58
+ var _b, _c, _d, _e;
51
59
  const { Body } = message, messageMetadata = __rest(message, ["Body"]);
52
- const sqsCtx = new sqs_context_1.SQSContext({ queueName, messageMetadata });
53
- yield handler(JSON.parse(Body), sqsCtx);
60
+ let parsedBody = JSON.parse(Body);
61
+ if (this.isS3Message(parsedBody)) {
62
+ parsedBody = yield this.readMessageFromPayloadS3Pointer(parsedBody[1]);
63
+ }
64
+ const topicArn = (_b = parsedBody.TopicArn) !== null && _b !== void 0 ? _b : (_e = (_d = (_c = parsedBody === null || parsedBody === void 0 ? void 0 : parsedBody.Records) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.Sns) === null || _e === void 0 ? void 0 : _e.TopicArn;
65
+ const topicName = topicArn === null || topicArn === void 0 ? void 0 : topicArn.split(':').pop();
66
+ if (acceptedTopics.length > 0 && (!topicName || !acceptedTopics.includes(topicName))) {
67
+ console.info(`Ignored message from topic ${topicName} on queue ${queueName}`);
68
+ return;
69
+ }
70
+ const context = new sqs_context_1.SQSContext({ queueName, messageMetadata });
71
+ console.log(`Received message from queue ${queueName}`);
72
+ yield handler(parsedBody, context);
54
73
  })
55
74
  });
56
75
  app.on('error', (err) => {
@@ -64,22 +83,42 @@ class SQSServer extends microservices_1.Server {
64
83
  this.registeredQueues.push(queueName);
65
84
  });
66
85
  }
86
+ readMessageFromPayloadS3Pointer(objectInfo) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ const object = yield this.s3.getObject({
89
+ Bucket: objectInfo.s3BucketName,
90
+ Key: objectInfo.s3Key
91
+ }).promise();
92
+ yield this.s3.deleteObject({
93
+ Bucket: objectInfo.s3BucketName,
94
+ Key: objectInfo.s3Key
95
+ }).promise();
96
+ return JSON.parse(object.Body.toString());
97
+ });
98
+ }
99
+ isS3Message(messageBody) {
100
+ return !!(messageBody && Array.isArray(messageBody)
101
+ && messageBody[0] instanceof String
102
+ && messageBody[0].includes('PayloadS3Pointer'));
103
+ }
67
104
  createQueueIfNotExist(queueName, options) {
68
- console.log(`AutoCreateQueue: ${options.autoCreateQueue}`);
69
105
  if (!options.autoCreateQueue) {
70
106
  return;
71
107
  }
72
- var params = {
108
+ const params = {
73
109
  QueueName: queueName,
74
110
  };
111
+ const sqs = this.sqs;
75
112
  sqs.getQueueUrl(params, function (err, data) {
76
113
  if (err) {
77
114
  if (err.code === 'AWS.SimpleQueueService.NonExistentQueue') {
78
115
  sqs.createQueue(params, function (err, data) {
79
- if (err)
116
+ if (err) {
80
117
  console.log(`Fail on create queue. Error: ${err}`);
81
- else
118
+ }
119
+ else {
82
120
  console.log(`Success on create queue ${queueName}`);
121
+ }
83
122
  });
84
123
  }
85
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqs-server.js","sourceRoot":"","sources":["../src/sqs-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqs-server.js","sourceRoot":"","sources":["../src/sqs-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apipass/sqs-server",
3
- "version": "0.0.31",
3
+ "version": "0.0.32-alpha.0",
4
4
  "description": "> TODO: description",
5
5
  "author": "Alexandre Zanelatto <alexandre@apipass.com.br>",
6
6
  "license": "ISC",
@@ -26,5 +26,5 @@
26
26
  "tsc": "tsc",
27
27
  "test": "node ./__tests__/@apipass/sqs-server.test.js"
28
28
  },
29
- "gitHead": "ce8c19cc1891256719151da4fbe1022fe6b593e8"
29
+ "gitHead": "53e25ff328bee83ba332cf9ca16b6bb409442da6"
30
30
  }