@apipass/sqs-server 0.0.32 → 0.0.33-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,16 @@ 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
+ console.log('1 handlerMetadata:', JSON.stringify(handlerMetadata));
45
+ const handler = handlerMetadata['callback'];
46
+ console.log('2 handler:', JSON.stringify(handler));
47
+ const extras = (_a = handlerMetadata.extras) !== null && _a !== void 0 ? _a : {};
48
+ console.log('3 extras:', JSON.stringify(handler));
49
+ const acceptedTopics = Array.isArray(extras.topic) ? extras.topic : [];
50
+ console.log('4 acceptedTopics:', JSON.stringify(acceptedTopics));
51
+ console.log('5 queueName:', queueName);
43
52
  this.createQueueIfNotExist(queueName, this.options);
44
53
  const queueAlreadyRegistered = this.registeredQueues.includes(queueName);
45
54
  if (queueAlreadyRegistered)
@@ -48,9 +57,21 @@ class SQSServer extends microservices_1.Server {
48
57
  sqs: this.sqs,
49
58
  queueUrl: `${this.options.endpoint}/${queueName}`,
50
59
  handleMessage: (message) => __awaiter(this, void 0, void 0, function* () {
60
+ var _b, _c, _d, _e;
51
61
  const { Body } = message, messageMetadata = __rest(message, ["Body"]);
52
- const sqsCtx = new sqs_context_1.SQSContext({ queueName, messageMetadata });
53
- yield handler(JSON.parse(Body), sqsCtx);
62
+ let parsedBody = JSON.parse(Body);
63
+ if (this.isS3Message(parsedBody)) {
64
+ parsedBody = yield this.readMessageFromPayloadS3Pointer(parsedBody[1]);
65
+ }
66
+ 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;
67
+ const topicName = topicArn === null || topicArn === void 0 ? void 0 : topicArn.split(':').pop();
68
+ if (acceptedTopics.length > 0 && (!topicName || !acceptedTopics.includes(topicName))) {
69
+ console.info(`Ignored message from topic ${topicName} on queue ${queueName}`);
70
+ return;
71
+ }
72
+ const context = new sqs_context_1.SQSContext({ queueName, messageMetadata });
73
+ console.log(`6 Received message from queue ${queueName}`);
74
+ yield handler(parsedBody, context);
54
75
  })
55
76
  });
56
77
  app.on('error', (err) => {
@@ -64,22 +85,42 @@ class SQSServer extends microservices_1.Server {
64
85
  this.registeredQueues.push(queueName);
65
86
  });
66
87
  }
88
+ readMessageFromPayloadS3Pointer(objectInfo) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ const object = yield this.s3.getObject({
91
+ Bucket: objectInfo.s3BucketName,
92
+ Key: objectInfo.s3Key
93
+ }).promise();
94
+ yield this.s3.deleteObject({
95
+ Bucket: objectInfo.s3BucketName,
96
+ Key: objectInfo.s3Key
97
+ }).promise();
98
+ return JSON.parse(object.Body.toString());
99
+ });
100
+ }
101
+ isS3Message(messageBody) {
102
+ return !!(messageBody && Array.isArray(messageBody)
103
+ && messageBody[0] instanceof String
104
+ && messageBody[0].includes('PayloadS3Pointer'));
105
+ }
67
106
  createQueueIfNotExist(queueName, options) {
68
- console.log(`AutoCreateQueue: ${options.autoCreateQueue}`);
69
107
  if (!options.autoCreateQueue) {
70
108
  return;
71
109
  }
72
- var params = {
110
+ const params = {
73
111
  QueueName: queueName,
74
112
  };
113
+ const sqs = this.sqs;
75
114
  sqs.getQueueUrl(params, function (err, data) {
76
115
  if (err) {
77
116
  if (err.code === 'AWS.SimpleQueueService.NonExistentQueue') {
78
117
  sqs.createQueue(params, function (err, data) {
79
- if (err)
118
+ if (err) {
80
119
  console.log(`Fail on create queue. Error: ${err}`);
81
- else
120
+ }
121
+ else {
82
122
  console.log(`Success on create queue ${queueName}`);
123
+ }
83
124
  });
84
125
  }
85
126
  }
@@ -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.32",
3
+ "version": "0.0.33-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": "eb3fe94bf531de68a087d9debc89014fc94bbe8e"
29
+ "gitHead": "739e2d6d8480c647dcdde21440f0da3df9d0aea3"
30
30
  }