summaryrefslogtreecommitdiff
path: root/Homework/cs5260/widgetrequesthandler/processors/SQSWidgetRequestProcessor.ts
diff options
context:
space:
mode:
Diffstat (limited to 'Homework/cs5260/widgetrequesthandler/processors/SQSWidgetRequestProcessor.ts')
-rw-r--r--Homework/cs5260/widgetrequesthandler/processors/SQSWidgetRequestProcessor.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/Homework/cs5260/widgetrequesthandler/processors/SQSWidgetRequestProcessor.ts b/Homework/cs5260/widgetrequesthandler/processors/SQSWidgetRequestProcessor.ts
new file mode 100644
index 0000000..cf4f4c5
--- /dev/null
+++ b/Homework/cs5260/widgetrequesthandler/processors/SQSWidgetRequestProcessor.ts
@@ -0,0 +1,31 @@
+import { TracingLogger } from "@/shared/log";
+import { WidgetRequestT } from "@/shared/schema";
+import { SQSClient, SendMessageCommand } from "@aws-sdk/client-sqs";
+import { ProcessorResponse, WidgetRequestProcessor } from ".";
+
+export class SQSWidgetRequestProcessor implements WidgetRequestProcessor {
+ private sqsClient: SQSClient;
+ private queueUrl: string;
+ private logger: TracingLogger;
+
+ constructor(sqsClient: SQSClient, queueUrl: string, logger: TracingLogger) {
+ this.sqsClient = sqsClient;
+ this.queueUrl = queueUrl;
+ this.logger = logger;
+ }
+
+ public async handle(
+ widgetRequest: WidgetRequestT,
+ ): Promise<ProcessorResponse> {
+ const MessageBody = JSON.stringify(widgetRequest);
+ this.logger.info(`Handling WidgetRequest=(${MessageBody})`);
+
+ const sendMessage = new SendMessageCommand({
+ QueueUrl: this.queueUrl,
+ MessageBody,
+ });
+ await this.sqsClient.send(sendMessage);
+
+ return { success: true, message: "added to queue" };
+ }
+}