From 543052d640d0dfc3c43faa04967e2e510dc815ce Mon Sep 17 00:00:00 2001 From: George Fu Date: Fri, 28 Apr 2023 18:24:35 -0400 Subject: [PATCH] fix(sqs): set httpRequest.params in queryCompatibility mode in JSON protocol (#4405) --- .changes/next-release/bugfix-SQS-e1c1ffea.json | 5 +++++ lib/protocol/json.js | 9 +++++++++ lib/services/sqs.js | 5 ++--- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 .changes/next-release/bugfix-SQS-e1c1ffea.json diff --git a/.changes/next-release/bugfix-SQS-e1c1ffea.json b/.changes/next-release/bugfix-SQS-e1c1ffea.json new file mode 100644 index 0000000000..a8246a1fb8 --- /dev/null +++ b/.changes/next-release/bugfix-SQS-e1c1ffea.json @@ -0,0 +1,5 @@ +{ + "type": "bugfix", + "category": "SQS", + "description": "add queryCompatibility fix to JSON protocol" +} \ No newline at end of file diff --git a/lib/protocol/json.js b/lib/protocol/json.js index 8edf52ff8c..2a7e3ad248 100644 --- a/lib/protocol/json.js +++ b/lib/protocol/json.js @@ -12,6 +12,15 @@ function buildRequest(req) { var builder = new JsonBuilder(); if (version === 1) version = '1.0'; + + if (api.awsQueryCompatible) { + if (!httpRequest.params) { + httpRequest.params = {}; + } + // because Query protocol does this. + Object.assign(httpRequest.params, req.params); + } + httpRequest.body = builder.build(req.params || {}, input); httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version; httpRequest.headers['X-Amz-Target'] = target; diff --git a/lib/services/sqs.js b/lib/services/sqs.js index 6fdca05052..42aaf2ec1f 100644 --- a/lib/services/sqs.js +++ b/lib/services/sqs.js @@ -5,7 +5,7 @@ AWS.util.update(AWS.SQS.prototype, { * @api private */ setupRequestListeners: function setupRequestListeners(request) { - request.addListener('build', this.buildEndpoint.bind(this)); + request.addListener('build', this.buildEndpoint); if (request.service.config.computeChecksums) { if (request.operation === 'sendMessage') { @@ -118,8 +118,7 @@ AWS.util.update(AWS.SQS.prototype, { * @api private */ buildEndpoint: function buildEndpoint(request) { - var params = request.httpRequest.params || this.config.params; - var url = params.QueueUrl; + var url = request.httpRequest.params.QueueUrl; if (url) { request.httpRequest.endpoint = new AWS.Endpoint(url);