aliyun-api-gateway
Advanced tools
Comparing version 1.0.2 to 1.0.3
'use strict'; | ||
const {parse, format} = require('url'); | ||
const querystring = require('querystring'); | ||
const crypto = require('crypto'); | ||
@@ -9,2 +8,3 @@ | ||
const httpx = require('httpx'); | ||
const debug = require('debug')('api-gateway'); | ||
@@ -25,3 +25,3 @@ const ua = require('./ua'); | ||
buildSignToString(method, headers, signedHeadersStr, url) { | ||
buildStringToSign(method, headers, signedHeadersStr, url) { | ||
// accept, contentMD5, contentType, | ||
@@ -89,7 +89,13 @@ const lf = '\n'; | ||
buildUrl(parsedUrl, query) { | ||
var toStringify = Object.assign({}, parsedUrl.query, query); | ||
buildUrl(parsedUrl) { | ||
var toStringify = parsedUrl.query; | ||
var result = parsedUrl.pathname; | ||
if (Object.keys(toStringify).length) { | ||
result += '?' + querystring.stringify(toStringify); | ||
var keys = Object.keys(toStringify).sort(); | ||
var list = new Array(keys.length); | ||
for (var i = 0; i < keys.length; i++) { | ||
var key = keys[i]; | ||
list[i] = `${key}=${toStringify[key]}`; | ||
} | ||
result += '?' + list.join('&'); | ||
} | ||
@@ -141,4 +147,4 @@ return result; | ||
var parsedUrl = parse(url, true); | ||
var signToString = this.buildSignToString(method, headers, signedHeadersStr, parsedUrl); | ||
headers['x-ca-signature'] = this.sign(signToString); | ||
var stringToSign = this.buildStringToSign(method, headers, signedHeadersStr, parsedUrl); | ||
headers['x-ca-signature'] = this.sign(stringToSign); | ||
headers['user-agent'] = ua; | ||
@@ -159,5 +165,14 @@ | ||
if (code !== 200) { | ||
var message = response.headers['x-ca-error-message']; | ||
var err = new Error(`${method} ${format(url)} failed width code(${code}).` + | ||
` request id: ${response.headers['x-ca-request-id']},` + | ||
` error message: ${response.headers['x-ca-error-message']}`); | ||
` error message: ${message}`); | ||
if (debug.enabled) { | ||
debug('stringToSign:'); | ||
debug('client: %s', stringToSign.replace(/\n/g, '#')); | ||
if (message.includes('Invalid Signature')) { | ||
var serverStringToSign = message.replace('Invalid Signature, Server StringToSign:', ''); | ||
debug('server: %s', serverStringToSign); | ||
} | ||
} | ||
throw err; | ||
@@ -164,0 +179,0 @@ } |
{ | ||
"name": "aliyun-api-gateway", | ||
"version": "1.0.2", | ||
"version": "1.0.3", | ||
"description": "Aliyun API Gateway Node.js SDK", | ||
@@ -15,2 +15,3 @@ "main": "index.js", | ||
"dependencies": { | ||
"debug": "^2.6.0", | ||
"httpx": "^2.0.0", | ||
@@ -17,0 +18,0 @@ "uuid": "^3.0.0" |
9914
238
3
+ Addeddebug@^2.6.0
+ Addeddebug@2.6.9(transitive)
+ Addedms@2.0.0(transitive)