diff --git a/ts/src/client.ts b/ts/src/client.ts index 03421a9..ef90952 100644 --- a/ts/src/client.ts +++ b/ts/src/client.ts @@ -690,6 +690,7 @@ export default class Client { request_.pathname = pathname; request_.headers = { 'user-agent': this.getUserAgent(), + 'Content-Type': 'application/json', Date: OpenSearchUtil.getDate(), host: Util.defaultString(this._endpoint, `opensearch-cn-hangzhou.aliyuncs.com`), 'X-Opensearch-Nonce': Util.getNonce(), diff --git a/util/ts/package.json b/util/ts/package.json index 801b126..48ee14a 100644 --- a/util/ts/package.json +++ b/util/ts/package.json @@ -19,8 +19,7 @@ "typescript": "^3.7.5" }, "dependencies": { - "@alicloud/tea-typescript": "latest", - "moment": "^2.27.0" + "@alicloud/tea-typescript": "latest" }, "files": [ "dist", diff --git a/util/ts/src/client.ts b/util/ts/src/client.ts index 3c46266..658fd9d 100644 --- a/util/ts/src/client.ts +++ b/util/ts/src/client.ts @@ -3,7 +3,6 @@ * This module used for OpenSearch SDK */ import * as $tea from '@alicloud/tea-typescript'; -import moment from 'moment'; import crypto from 'crypto'; function getSignedStr(request: $tea.Request, resource: string, accessKeySecret: string): string { @@ -36,20 +35,20 @@ function getSignedStr(request: $tea.Request, resource: string, accessKeySecret: function getSignature(request: $tea.Request, accessKeySecret: string): string { let resource = request.pathname; - const keys = Object.keys(request.query); - if (resource.indexOf('?') === -1 && keys.length > 0) { - resource += '?'; + const params = Object + .entries(request.query) + .filter(([, value]) => typeof value !== "undefined" && value !== null) + .map(([key, value]) => { + let valueStr = encodeURIComponent(value); + valueStr = valueStr.replace(/'/g, "%27"); + return `${key}=${valueStr}`; + }); + + if (params.length) { + resource += `?${params.join("&")}`; } - keys.forEach(key => { - let value = request.query[key]; - if (typeof value === 'undefined' || value === null) { - return; - } - let valueStr = encodeURIComponent(value); - valueStr = valueStr.replace(/'/g, '%27'); - resource += `${key}=${valueStr}&`; - }) - return getSignedStr(request, resource.slice(0, -1), accessKeySecret) + + return getSignedStr(request, resource, accessKeySecret) } @@ -92,7 +91,7 @@ export default class Client { * @return date string */ static getDate(): string { - return moment().format('YYYY-MM-DDTHH:mm:ss\\Z'); + return new Date().toISOString().replace(/\.\d+/,''); } /**