UNPKG

@alicloud/openapi-client

Version:

English | [简体中文](README-CN.md)

987 lines (986 loc) 58 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Params = exports.OpenApiRequest = exports.Config = exports.GlobalParameters = void 0; // This file is auto-generated, don't edit it /** * This is for OpenApi SDK */ const tea_util_1 = __importDefault(require("@alicloud/tea-util")); const credentials_1 = __importStar(require("@alicloud/credentials")), $Credential = credentials_1; const openapi_util_1 = __importDefault(require("@alicloud/openapi-util")); const $SPI = __importStar(require("@alicloud/gateway-spi")); const tea_xml_1 = __importDefault(require("@alicloud/tea-xml")); const $tea = __importStar(require("@alicloud/tea-typescript")); class GlobalParameters extends $tea.Model { constructor(map) { super(map); } static names() { return { headers: 'headers', queries: 'queries', }; } static types() { return { headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' }, queries: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' }, }; } } exports.GlobalParameters = GlobalParameters; /** * Model for initing client */ class Config extends $tea.Model { constructor(map) { super(map); } static names() { return { accessKeyId: 'accessKeyId', accessKeySecret: 'accessKeySecret', securityToken: 'securityToken', protocol: 'protocol', method: 'method', regionId: 'regionId', readTimeout: 'readTimeout', connectTimeout: 'connectTimeout', httpProxy: 'httpProxy', httpsProxy: 'httpsProxy', credential: 'credential', endpoint: 'endpoint', noProxy: 'noProxy', maxIdleConns: 'maxIdleConns', network: 'network', userAgent: 'userAgent', suffix: 'suffix', socks5Proxy: 'socks5Proxy', socks5NetWork: 'socks5NetWork', endpointType: 'endpointType', openPlatformEndpoint: 'openPlatformEndpoint', type: 'type', signatureVersion: 'signatureVersion', signatureAlgorithm: 'signatureAlgorithm', globalParameters: 'globalParameters', key: 'key', cert: 'cert', ca: 'ca', }; } static types() { return { accessKeyId: 'string', accessKeySecret: 'string', securityToken: 'string', protocol: 'string', method: 'string', regionId: 'string', readTimeout: 'number', connectTimeout: 'number', httpProxy: 'string', httpsProxy: 'string', credential: credentials_1.default, endpoint: 'string', noProxy: 'string', maxIdleConns: 'number', network: 'string', userAgent: 'string', suffix: 'string', socks5Proxy: 'string', socks5NetWork: 'string', endpointType: 'string', openPlatformEndpoint: 'string', type: 'string', signatureVersion: 'string', signatureAlgorithm: 'string', globalParameters: GlobalParameters, key: 'string', cert: 'string', ca: 'string', }; } } exports.Config = Config; class OpenApiRequest extends $tea.Model { constructor(map) { super(map); } static names() { return { headers: 'headers', query: 'query', body: 'body', stream: 'stream', hostMap: 'hostMap', endpointOverride: 'endpointOverride', }; } static types() { return { headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' }, query: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' }, body: 'any', stream: 'Readable', hostMap: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' }, endpointOverride: 'string', }; } } exports.OpenApiRequest = OpenApiRequest; class Params extends $tea.Model { constructor(map) { super(map); } static names() { return { action: 'action', version: 'version', protocol: 'protocol', pathname: 'pathname', method: 'method', authType: 'authType', bodyType: 'bodyType', reqBodyType: 'reqBodyType', style: 'style', }; } static types() { return { action: 'string', version: 'string', protocol: 'string', pathname: 'string', method: 'string', authType: 'string', bodyType: 'string', reqBodyType: 'string', style: 'string', }; } } exports.Params = Params; class Client { /** * Init client with Config * @param config config contains the necessary information to create a client */ constructor(config) { if (tea_util_1.default.isUnset(config)) { throw $tea.newError({ code: "ParameterMissing", message: "'config' can not be unset", }); } if (!tea_util_1.default.empty(config.accessKeyId) && !tea_util_1.default.empty(config.accessKeySecret)) { if (!tea_util_1.default.empty(config.securityToken)) { config.type = "sts"; } else { config.type = "access_key"; } let credentialConfig = new $Credential.Config({ accessKeyId: config.accessKeyId, type: config.type, accessKeySecret: config.accessKeySecret, }); credentialConfig.securityToken = config.securityToken; this._credential = new credentials_1.default(credentialConfig); } else if (!tea_util_1.default.isUnset(config.credential)) { this._credential = config.credential; } this._endpoint = config.endpoint; this._endpointType = config.endpointType; this._network = config.network; this._suffix = config.suffix; this._protocol = config.protocol; this._method = config.method; this._regionId = config.regionId; this._userAgent = config.userAgent; this._readTimeout = config.readTimeout; this._connectTimeout = config.connectTimeout; this._httpProxy = config.httpProxy; this._httpsProxy = config.httpsProxy; this._noProxy = config.noProxy; this._socks5Proxy = config.socks5Proxy; this._socks5NetWork = config.socks5NetWork; this._maxIdleConns = config.maxIdleConns; this._signatureVersion = config.signatureVersion; this._signatureAlgorithm = config.signatureAlgorithm; this._globalParameters = config.globalParameters; this._key = config.key; this._cert = config.cert; this._ca = config.ca; } /** * Encapsulate the request and invoke the network * @param action api name * @param version product version * @param protocol http or https * @param method e.g. GET * @param authType authorization type e.g. AK * @param bodyType response body type e.g. String * @param request object of OpenApiRequest * @param runtime which controls some details of call api, such as retry times * @return the response */ async doRPCRequest(action, version, protocol, method, authType, bodyType, request, runtime) { let _runtime = { timeouted: "retry", key: tea_util_1.default.defaultString(runtime.key, this._key), cert: tea_util_1.default.defaultString(runtime.cert, this._cert), ca: tea_util_1.default.defaultString(runtime.ca, this._ca), readTimeout: tea_util_1.default.defaultNumber(runtime.readTimeout, this._readTimeout), connectTimeout: tea_util_1.default.defaultNumber(runtime.connectTimeout, this._connectTimeout), httpProxy: tea_util_1.default.defaultString(runtime.httpProxy, this._httpProxy), httpsProxy: tea_util_1.default.defaultString(runtime.httpsProxy, this._httpsProxy), noProxy: tea_util_1.default.defaultString(runtime.noProxy, this._noProxy), socks5Proxy: tea_util_1.default.defaultString(runtime.socks5Proxy, this._socks5Proxy), socks5NetWork: tea_util_1.default.defaultString(runtime.socks5NetWork, this._socks5NetWork), maxIdleConns: tea_util_1.default.defaultNumber(runtime.maxIdleConns, this._maxIdleConns), retry: { retryable: runtime.autoretry, maxAttempts: tea_util_1.default.defaultNumber(runtime.maxAttempts, 3), }, backoff: { policy: tea_util_1.default.defaultString(runtime.backoffPolicy, "no"), period: tea_util_1.default.defaultNumber(runtime.backoffPeriod, 1), }, ignoreSSL: runtime.ignoreSSL, }; let _lastRequest = null; let _now = Date.now(); let _retryTimes = 0; while ($tea.allowRetry(_runtime['retry'], _retryTimes, _now)) { if (_retryTimes > 0) { let _backoffTime = $tea.getBackoffTime(_runtime['backoff'], _retryTimes); if (_backoffTime > 0) { await $tea.sleep(_backoffTime); } } _retryTimes = _retryTimes + 1; try { let request_ = new $tea.Request(); request_.protocol = tea_util_1.default.defaultString(this._protocol, protocol); request_.method = method; request_.pathname = "/"; let globalQueries = {}; let globalHeaders = {}; if (!tea_util_1.default.isUnset(this._globalParameters)) { let globalParams = this._globalParameters; if (!tea_util_1.default.isUnset(globalParams.queries)) { globalQueries = globalParams.queries; } if (!tea_util_1.default.isUnset(globalParams.headers)) { globalHeaders = globalParams.headers; } } request_.query = Object.assign(Object.assign({ Action: action, Format: "json", Version: version, Timestamp: openapi_util_1.default.getTimestamp(), SignatureNonce: tea_util_1.default.getNonce() }, globalQueries), request.query); let headers = this.getRpcHeaders(); if (tea_util_1.default.isUnset(headers)) { // endpoint is setted in product client request_.headers = Object.assign({ host: this._endpoint, 'x-acs-version': version, 'x-acs-action': action, 'user-agent': this.getUserAgent() }, globalHeaders); } else { request_.headers = Object.assign(Object.assign({ host: this._endpoint, 'x-acs-version': version, 'x-acs-action': action, 'user-agent': this.getUserAgent() }, globalHeaders), headers); } if (!tea_util_1.default.isUnset(request.body)) { let m = tea_util_1.default.assertAsMap(request.body); let tmp = tea_util_1.default.anyifyMapValue(openapi_util_1.default.query(m)); request_.body = new $tea.BytesReadable(tea_util_1.default.toFormString(tmp)); request_.headers["content-type"] = "application/x-www-form-urlencoded"; } if (!tea_util_1.default.equalString(authType, "Anonymous")) { let accessKeyId = await this.getAccessKeyId(); let accessKeySecret = await this.getAccessKeySecret(); let securityToken = await this.getSecurityToken(); if (!tea_util_1.default.empty(securityToken)) { request_.query["SecurityToken"] = securityToken; } request_.query["SignatureMethod"] = "HMAC-SHA1"; request_.query["SignatureVersion"] = "1.0"; request_.query["AccessKeyId"] = accessKeyId; let t = null; if (!tea_util_1.default.isUnset(request.body)) { t = tea_util_1.default.assertAsMap(request.body); } let signedParam = Object.assign(Object.assign({}, request_.query), openapi_util_1.default.query(t)); request_.query["Signature"] = openapi_util_1.default.getRPCSignature(signedParam, request_.method, accessKeySecret); } _lastRequest = request_; let response_ = await $tea.doAction(request_, _runtime); if (tea_util_1.default.is4xx(response_.statusCode) || tea_util_1.default.is5xx(response_.statusCode)) { let _res = await tea_util_1.default.readAsJSON(response_.body); let err = tea_util_1.default.assertAsMap(_res); let requestId = Client.defaultAny(err["RequestId"], err["requestId"]); err["statusCode"] = response_.statusCode; throw $tea.newError({ code: `${Client.defaultAny(err["Code"], err["code"])}`, message: `code: ${response_.statusCode}, ${Client.defaultAny(err["Message"], err["message"])} request id: ${requestId}`, data: err, description: `${Client.defaultAny(err["Description"], err["description"])}`, accessDeniedDetail: Client.defaultAny(err["AccessDeniedDetail"], err["accessDeniedDetail"]), }); } if (tea_util_1.default.equalString(bodyType, "binary")) { let resp = { body: response_.body, headers: response_.headers, statusCode: response_.statusCode, }; return resp; } else if (tea_util_1.default.equalString(bodyType, "byte")) { let byt = await tea_util_1.default.readAsBytes(response_.body); return { body: byt, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(bodyType, "string")) { let str = await tea_util_1.default.readAsString(response_.body); return { body: str, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(bodyType, "json")) { let obj = await tea_util_1.default.readAsJSON(response_.body); let res = tea_util_1.default.assertAsMap(obj); return { body: res, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(bodyType, "array")) { let arr = await tea_util_1.default.readAsJSON(response_.body); return { body: arr, headers: response_.headers, statusCode: response_.statusCode, }; } else { return { headers: response_.headers, statusCode: response_.statusCode, }; } } catch (ex) { if ($tea.isRetryable(ex)) { continue; } throw ex; } } throw $tea.newUnretryableError(_lastRequest); } /** * Encapsulate the request and invoke the network * @param action api name * @param version product version * @param protocol http or https * @param method e.g. GET * @param authType authorization type e.g. AK * @param pathname pathname of every api * @param bodyType response body type e.g. String * @param request object of OpenApiRequest * @param runtime which controls some details of call api, such as retry times * @return the response */ async doROARequest(action, version, protocol, method, authType, pathname, bodyType, request, runtime) { let _runtime = { timeouted: "retry", key: tea_util_1.default.defaultString(runtime.key, this._key), cert: tea_util_1.default.defaultString(runtime.cert, this._cert), ca: tea_util_1.default.defaultString(runtime.ca, this._ca), readTimeout: tea_util_1.default.defaultNumber(runtime.readTimeout, this._readTimeout), connectTimeout: tea_util_1.default.defaultNumber(runtime.connectTimeout, this._connectTimeout), httpProxy: tea_util_1.default.defaultString(runtime.httpProxy, this._httpProxy), httpsProxy: tea_util_1.default.defaultString(runtime.httpsProxy, this._httpsProxy), noProxy: tea_util_1.default.defaultString(runtime.noProxy, this._noProxy), socks5Proxy: tea_util_1.default.defaultString(runtime.socks5Proxy, this._socks5Proxy), socks5NetWork: tea_util_1.default.defaultString(runtime.socks5NetWork, this._socks5NetWork), maxIdleConns: tea_util_1.default.defaultNumber(runtime.maxIdleConns, this._maxIdleConns), retry: { retryable: runtime.autoretry, maxAttempts: tea_util_1.default.defaultNumber(runtime.maxAttempts, 3), }, backoff: { policy: tea_util_1.default.defaultString(runtime.backoffPolicy, "no"), period: tea_util_1.default.defaultNumber(runtime.backoffPeriod, 1), }, ignoreSSL: runtime.ignoreSSL, }; let _lastRequest = null; let _now = Date.now(); let _retryTimes = 0; while ($tea.allowRetry(_runtime['retry'], _retryTimes, _now)) { if (_retryTimes > 0) { let _backoffTime = $tea.getBackoffTime(_runtime['backoff'], _retryTimes); if (_backoffTime > 0) { await $tea.sleep(_backoffTime); } } _retryTimes = _retryTimes + 1; try { let request_ = new $tea.Request(); request_.protocol = tea_util_1.default.defaultString(this._protocol, protocol); request_.method = method; request_.pathname = pathname; let globalQueries = {}; let globalHeaders = {}; if (!tea_util_1.default.isUnset(this._globalParameters)) { let globalParams = this._globalParameters; if (!tea_util_1.default.isUnset(globalParams.queries)) { globalQueries = globalParams.queries; } if (!tea_util_1.default.isUnset(globalParams.headers)) { globalHeaders = globalParams.headers; } } request_.headers = Object.assign(Object.assign({ date: tea_util_1.default.getDateUTCString(), host: this._endpoint, accept: "application/json", 'x-acs-signature-nonce': tea_util_1.default.getNonce(), 'x-acs-signature-method': "HMAC-SHA1", 'x-acs-signature-version': "1.0", 'x-acs-version': version, 'x-acs-action': action, 'user-agent': tea_util_1.default.getUserAgent(this._userAgent) }, globalHeaders), request.headers); if (!tea_util_1.default.isUnset(request.body)) { request_.body = new $tea.BytesReadable(tea_util_1.default.toJSONString(request.body)); request_.headers["content-type"] = "application/json; charset=utf-8"; } request_.query = globalQueries; if (!tea_util_1.default.isUnset(request.query)) { request_.query = Object.assign(Object.assign({}, request_.query), request.query); } if (!tea_util_1.default.equalString(authType, "Anonymous")) { let accessKeyId = await this.getAccessKeyId(); let accessKeySecret = await this.getAccessKeySecret(); let securityToken = await this.getSecurityToken(); if (!tea_util_1.default.empty(securityToken)) { request_.headers["x-acs-accesskey-id"] = accessKeyId; request_.headers["x-acs-security-token"] = securityToken; } let stringToSign = openapi_util_1.default.getStringToSign(request_); request_.headers["authorization"] = `acs ${accessKeyId}:${openapi_util_1.default.getROASignature(stringToSign, accessKeySecret)}`; } _lastRequest = request_; let response_ = await $tea.doAction(request_, _runtime); if (tea_util_1.default.equalNumber(response_.statusCode, 204)) { return { headers: response_.headers, }; } if (tea_util_1.default.is4xx(response_.statusCode) || tea_util_1.default.is5xx(response_.statusCode)) { let _res = await tea_util_1.default.readAsJSON(response_.body); let err = tea_util_1.default.assertAsMap(_res); let requestId = Client.defaultAny(err["RequestId"], err["requestId"]); requestId = Client.defaultAny(requestId, err["requestid"]); err["statusCode"] = response_.statusCode; throw $tea.newError({ code: `${Client.defaultAny(err["Code"], err["code"])}`, message: `code: ${response_.statusCode}, ${Client.defaultAny(err["Message"], err["message"])} request id: ${requestId}`, data: err, description: `${Client.defaultAny(err["Description"], err["description"])}`, accessDeniedDetail: Client.defaultAny(err["AccessDeniedDetail"], err["accessDeniedDetail"]), }); } if (tea_util_1.default.equalString(bodyType, "binary")) { let resp = { body: response_.body, headers: response_.headers, statusCode: response_.statusCode, }; return resp; } else if (tea_util_1.default.equalString(bodyType, "byte")) { let byt = await tea_util_1.default.readAsBytes(response_.body); return { body: byt, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(bodyType, "string")) { let str = await tea_util_1.default.readAsString(response_.body); return { body: str, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(bodyType, "json")) { let obj = await tea_util_1.default.readAsJSON(response_.body); let res = tea_util_1.default.assertAsMap(obj); return { body: res, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(bodyType, "array")) { let arr = await tea_util_1.default.readAsJSON(response_.body); return { body: arr, headers: response_.headers, statusCode: response_.statusCode, }; } else { return { headers: response_.headers, statusCode: response_.statusCode, }; } } catch (ex) { if ($tea.isRetryable(ex)) { continue; } throw ex; } } throw $tea.newUnretryableError(_lastRequest); } /** * Encapsulate the request and invoke the network with form body * @param action api name * @param version product version * @param protocol http or https * @param method e.g. GET * @param authType authorization type e.g. AK * @param pathname pathname of every api * @param bodyType response body type e.g. String * @param request object of OpenApiRequest * @param runtime which controls some details of call api, such as retry times * @return the response */ async doROARequestWithForm(action, version, protocol, method, authType, pathname, bodyType, request, runtime) { let _runtime = { timeouted: "retry", key: tea_util_1.default.defaultString(runtime.key, this._key), cert: tea_util_1.default.defaultString(runtime.cert, this._cert), ca: tea_util_1.default.defaultString(runtime.ca, this._ca), readTimeout: tea_util_1.default.defaultNumber(runtime.readTimeout, this._readTimeout), connectTimeout: tea_util_1.default.defaultNumber(runtime.connectTimeout, this._connectTimeout), httpProxy: tea_util_1.default.defaultString(runtime.httpProxy, this._httpProxy), httpsProxy: tea_util_1.default.defaultString(runtime.httpsProxy, this._httpsProxy), noProxy: tea_util_1.default.defaultString(runtime.noProxy, this._noProxy), socks5Proxy: tea_util_1.default.defaultString(runtime.socks5Proxy, this._socks5Proxy), socks5NetWork: tea_util_1.default.defaultString(runtime.socks5NetWork, this._socks5NetWork), maxIdleConns: tea_util_1.default.defaultNumber(runtime.maxIdleConns, this._maxIdleConns), retry: { retryable: runtime.autoretry, maxAttempts: tea_util_1.default.defaultNumber(runtime.maxAttempts, 3), }, backoff: { policy: tea_util_1.default.defaultString(runtime.backoffPolicy, "no"), period: tea_util_1.default.defaultNumber(runtime.backoffPeriod, 1), }, ignoreSSL: runtime.ignoreSSL, }; let _lastRequest = null; let _now = Date.now(); let _retryTimes = 0; while ($tea.allowRetry(_runtime['retry'], _retryTimes, _now)) { if (_retryTimes > 0) { let _backoffTime = $tea.getBackoffTime(_runtime['backoff'], _retryTimes); if (_backoffTime > 0) { await $tea.sleep(_backoffTime); } } _retryTimes = _retryTimes + 1; try { let request_ = new $tea.Request(); request_.protocol = tea_util_1.default.defaultString(this._protocol, protocol); request_.method = method; request_.pathname = pathname; let globalQueries = {}; let globalHeaders = {}; if (!tea_util_1.default.isUnset(this._globalParameters)) { let globalParams = this._globalParameters; if (!tea_util_1.default.isUnset(globalParams.queries)) { globalQueries = globalParams.queries; } if (!tea_util_1.default.isUnset(globalParams.headers)) { globalHeaders = globalParams.headers; } } request_.headers = Object.assign(Object.assign({ date: tea_util_1.default.getDateUTCString(), host: this._endpoint, accept: "application/json", 'x-acs-signature-nonce': tea_util_1.default.getNonce(), 'x-acs-signature-method': "HMAC-SHA1", 'x-acs-signature-version': "1.0", 'x-acs-version': version, 'x-acs-action': action, 'user-agent': tea_util_1.default.getUserAgent(this._userAgent) }, globalHeaders), request.headers); if (!tea_util_1.default.isUnset(request.body)) { let m = tea_util_1.default.assertAsMap(request.body); request_.body = new $tea.BytesReadable(openapi_util_1.default.toForm(m)); request_.headers["content-type"] = "application/x-www-form-urlencoded"; } request_.query = globalQueries; if (!tea_util_1.default.isUnset(request.query)) { request_.query = Object.assign(Object.assign({}, request_.query), request.query); } if (!tea_util_1.default.equalString(authType, "Anonymous")) { let accessKeyId = await this.getAccessKeyId(); let accessKeySecret = await this.getAccessKeySecret(); let securityToken = await this.getSecurityToken(); if (!tea_util_1.default.empty(securityToken)) { request_.headers["x-acs-accesskey-id"] = accessKeyId; request_.headers["x-acs-security-token"] = securityToken; } let stringToSign = openapi_util_1.default.getStringToSign(request_); request_.headers["authorization"] = `acs ${accessKeyId}:${openapi_util_1.default.getROASignature(stringToSign, accessKeySecret)}`; } _lastRequest = request_; let response_ = await $tea.doAction(request_, _runtime); if (tea_util_1.default.equalNumber(response_.statusCode, 204)) { return { headers: response_.headers, }; } if (tea_util_1.default.is4xx(response_.statusCode) || tea_util_1.default.is5xx(response_.statusCode)) { let _res = await tea_util_1.default.readAsJSON(response_.body); let err = tea_util_1.default.assertAsMap(_res); err["statusCode"] = response_.statusCode; throw $tea.newError({ code: `${Client.defaultAny(err["Code"], err["code"])}`, message: `code: ${response_.statusCode}, ${Client.defaultAny(err["Message"], err["message"])} request id: ${Client.defaultAny(err["RequestId"], err["requestId"])}`, data: err, description: `${Client.defaultAny(err["Description"], err["description"])}`, accessDeniedDetail: Client.defaultAny(err["AccessDeniedDetail"], err["accessDeniedDetail"]), }); } if (tea_util_1.default.equalString(bodyType, "binary")) { let resp = { body: response_.body, headers: response_.headers, statusCode: response_.statusCode, }; return resp; } else if (tea_util_1.default.equalString(bodyType, "byte")) { let byt = await tea_util_1.default.readAsBytes(response_.body); return { body: byt, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(bodyType, "string")) { let str = await tea_util_1.default.readAsString(response_.body); return { body: str, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(bodyType, "json")) { let obj = await tea_util_1.default.readAsJSON(response_.body); let res = tea_util_1.default.assertAsMap(obj); return { body: res, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(bodyType, "array")) { let arr = await tea_util_1.default.readAsJSON(response_.body); return { body: arr, headers: response_.headers, statusCode: response_.statusCode, }; } else { return { headers: response_.headers, statusCode: response_.statusCode, }; } } catch (ex) { if ($tea.isRetryable(ex)) { continue; } throw ex; } } throw $tea.newUnretryableError(_lastRequest); } /** * Encapsulate the request and invoke the network * @param action api name * @param version product version * @param protocol http or https * @param method e.g. GET * @param authType authorization type e.g. AK * @param bodyType response body type e.g. String * @param request object of OpenApiRequest * @param runtime which controls some details of call api, such as retry times * @return the response */ async doRequest(params, request, runtime) { let _runtime = { timeouted: "retry", key: tea_util_1.default.defaultString(runtime.key, this._key), cert: tea_util_1.default.defaultString(runtime.cert, this._cert), ca: tea_util_1.default.defaultString(runtime.ca, this._ca), readTimeout: tea_util_1.default.defaultNumber(runtime.readTimeout, this._readTimeout), connectTimeout: tea_util_1.default.defaultNumber(runtime.connectTimeout, this._connectTimeout), httpProxy: tea_util_1.default.defaultString(runtime.httpProxy, this._httpProxy), httpsProxy: tea_util_1.default.defaultString(runtime.httpsProxy, this._httpsProxy), noProxy: tea_util_1.default.defaultString(runtime.noProxy, this._noProxy), socks5Proxy: tea_util_1.default.defaultString(runtime.socks5Proxy, this._socks5Proxy), socks5NetWork: tea_util_1.default.defaultString(runtime.socks5NetWork, this._socks5NetWork), maxIdleConns: tea_util_1.default.defaultNumber(runtime.maxIdleConns, this._maxIdleConns), retry: { retryable: runtime.autoretry, maxAttempts: tea_util_1.default.defaultNumber(runtime.maxAttempts, 3), }, backoff: { policy: tea_util_1.default.defaultString(runtime.backoffPolicy, "no"), period: tea_util_1.default.defaultNumber(runtime.backoffPeriod, 1), }, ignoreSSL: runtime.ignoreSSL, }; let _lastRequest = null; let _now = Date.now(); let _retryTimes = 0; while ($tea.allowRetry(_runtime['retry'], _retryTimes, _now)) { if (_retryTimes > 0) { let _backoffTime = $tea.getBackoffTime(_runtime['backoff'], _retryTimes); if (_backoffTime > 0) { await $tea.sleep(_backoffTime); } } _retryTimes = _retryTimes + 1; try { let request_ = new $tea.Request(); request_.protocol = tea_util_1.default.defaultString(this._protocol, params.protocol); request_.method = params.method; request_.pathname = params.pathname; let globalQueries = {}; let globalHeaders = {}; if (!tea_util_1.default.isUnset(this._globalParameters)) { let globalParams = this._globalParameters; if (!tea_util_1.default.isUnset(globalParams.queries)) { globalQueries = globalParams.queries; } if (!tea_util_1.default.isUnset(globalParams.headers)) { globalHeaders = globalParams.headers; } } request_.query = Object.assign(Object.assign({}, globalQueries), request.query); // endpoint is setted in product client request_.headers = Object.assign(Object.assign({ host: this._endpoint, 'x-acs-version': params.version, 'x-acs-action': params.action, 'user-agent': this.getUserAgent(), 'x-acs-date': openapi_util_1.default.getTimestamp(), 'x-acs-signature-nonce': tea_util_1.default.getNonce(), accept: "application/json" }, globalHeaders), request.headers); if (tea_util_1.default.equalString(params.style, "RPC")) { let headers = this.getRpcHeaders(); if (!tea_util_1.default.isUnset(headers)) { request_.headers = Object.assign(Object.assign({}, request_.headers), headers); } } let signatureAlgorithm = tea_util_1.default.defaultString(this._signatureAlgorithm, "ACS3-HMAC-SHA256"); let hashedRequestPayload = openapi_util_1.default.hexEncode(openapi_util_1.default.hash(tea_util_1.default.toBytes(""), signatureAlgorithm)); if (!tea_util_1.default.isUnset(request.stream)) { let tmp = await tea_util_1.default.readAsBytes(request.stream); hashedRequestPayload = openapi_util_1.default.hexEncode(openapi_util_1.default.hash(tmp, signatureAlgorithm)); request_.body = new $tea.BytesReadable(tmp); request_.headers["content-type"] = "application/octet-stream"; } else { if (!tea_util_1.default.isUnset(request.body)) { if (tea_util_1.default.equalString(params.reqBodyType, "json")) { let jsonObj = tea_util_1.default.toJSONString(request.body); hashedRequestPayload = openapi_util_1.default.hexEncode(openapi_util_1.default.hash(tea_util_1.default.toBytes(jsonObj), signatureAlgorithm)); request_.body = new $tea.BytesReadable(jsonObj); request_.headers["content-type"] = "application/json; charset=utf-8"; } else { let m = tea_util_1.default.assertAsMap(request.body); let formObj = openapi_util_1.default.toForm(m); hashedRequestPayload = openapi_util_1.default.hexEncode(openapi_util_1.default.hash(tea_util_1.default.toBytes(formObj), signatureAlgorithm)); request_.body = new $tea.BytesReadable(formObj); request_.headers["content-type"] = "application/x-www-form-urlencoded"; } } } request_.headers["x-acs-content-sha256"] = hashedRequestPayload; if (!tea_util_1.default.equalString(params.authType, "Anonymous")) { let authType = await this.getType(); if (tea_util_1.default.equalString(authType, "bearer")) { let bearerToken = await this.getBearerToken(); request_.headers["x-acs-bearer-token"] = bearerToken; } else { let accessKeyId = await this.getAccessKeyId(); let accessKeySecret = await this.getAccessKeySecret(); let securityToken = await this.getSecurityToken(); if (!tea_util_1.default.empty(securityToken)) { request_.headers["x-acs-accesskey-id"] = accessKeyId; request_.headers["x-acs-security-token"] = securityToken; } request_.headers["Authorization"] = openapi_util_1.default.getAuthorization(request_, signatureAlgorithm, hashedRequestPayload, accessKeyId, accessKeySecret); } } _lastRequest = request_; let response_ = await $tea.doAction(request_, _runtime); if (tea_util_1.default.is4xx(response_.statusCode) || tea_util_1.default.is5xx(response_.statusCode)) { let err = {}; if (!tea_util_1.default.isUnset(response_.headers["content-type"]) && tea_util_1.default.equalString(response_.headers["content-type"], "text/xml;charset=utf-8")) { let _str = await tea_util_1.default.readAsString(response_.body); let respMap = tea_xml_1.default.parseXml(_str, null); err = tea_util_1.default.assertAsMap(respMap["Error"]); } else { let _res = await tea_util_1.default.readAsJSON(response_.body); err = tea_util_1.default.assertAsMap(_res); } err["statusCode"] = response_.statusCode; throw $tea.newError({ code: `${Client.defaultAny(err["Code"], err["code"])}`, message: `code: ${response_.statusCode}, ${Client.defaultAny(err["Message"], err["message"])} request id: ${Client.defaultAny(err["RequestId"], err["requestId"])}`, data: err, description: `${Client.defaultAny(err["Description"], err["description"])}`, accessDeniedDetail: Client.defaultAny(err["AccessDeniedDetail"], err["accessDeniedDetail"]), }); } if (tea_util_1.default.equalString(params.bodyType, "binary")) { let resp = { body: response_.body, headers: response_.headers, statusCode: response_.statusCode, }; return resp; } else if (tea_util_1.default.equalString(params.bodyType, "byte")) { let byt = await tea_util_1.default.readAsBytes(response_.body); return { body: byt, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(params.bodyType, "string")) { let str = await tea_util_1.default.readAsString(response_.body); return { body: str, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(params.bodyType, "json")) { let obj = await tea_util_1.default.readAsJSON(response_.body); let res = tea_util_1.default.assertAsMap(obj); return { body: res, headers: response_.headers, statusCode: response_.statusCode, }; } else if (tea_util_1.default.equalString(params.bodyType, "array")) { let arr = await tea_util_1.default.readAsJSON(response_.body); return { body: arr, headers: response_.headers, statusCode: response_.statusCode, }; } else { return { headers: response_.headers, statusCode: response_.statusCode, }; } } catch (ex) { if ($tea.isRetryable(ex)) { continue; } throw ex; } } throw $tea.newUnretryableError(_lastRequest); } /** * Encapsulate the request and invoke the network * @param action api name * @param version product version * @param protocol http or https * @param method e.g. GET * @param authType authorization type e.g. AK * @param bodyType response body type e.g. String * @param request object of OpenApiRequest * @param runtime which controls some details of call api, such as retry times * @return the response */ async execute(params, request, runtime) { let _runtime = { timeouted: "retry", key: tea_util_1.default.defaultString(runtime.key, this._key), cert: tea_util_1.default.defaultString(runtime.cert, this._cert), ca: tea_util_1.default.defaultString(runtime.ca, this._ca), readTimeout: tea_util_1.default.defaultNumber(runtime.readTimeout, this._readTimeout), connectTimeout: tea_util_1.default.defaultNumber(runtime.connectTimeout, this._connectTimeout), httpProxy: tea_util_1.default.defaultString(runtime.httpProxy, this._httpProxy), httpsProxy: tea_util_1.default.defaultString(runtime.httpsProxy, this._httpsProxy), noProxy: tea_util_1.default.defaultString(runtime.noProxy, this._noProxy), socks5Proxy: tea_util_1.default.defaultString(runtime.socks5Proxy, this._socks5Proxy), socks5NetWork: tea_util_1.default.defaultString(runtime.socks5NetWork, this._socks5NetWork), maxIdleConns: tea_util_1.default.defaultNumber(runtime.maxIdleConns, this._maxIdleConns), retry: { retryable: runtime.autoretry, maxAttempts: tea_util_1.default.defaultNumber(runtime.maxAttempts, 3), }, backoff: { policy: tea_util_1.default.defaultString(runtime.backoffPolicy, "no"), period: tea_util_1.default.defaultNumber(runtime.backoffPeriod, 1), }, ignoreSSL: runtime.ignoreSSL, }; let _lastRequest = null; let _now = Date.now(); let _retryTimes = 0; while ($tea.allowRetry(_runtime['retry'], _retryTimes, _now)) { if (_retryTimes > 0) { let _backoffTime = $tea.getBackoffTime(_runtime['backoff'], _retryTimes); if (_backoffTime > 0) { await $tea.sleep(_backoffTime); } } _retryTimes = _retryTimes + 1; try { let request_ = new $tea.Request(); // spi = new Gateway();//Gateway implements SPI,这一步在产品 SDK 中实例化 let headers = this.getRpcHeaders(); let globalQueries = {}; let globalHeaders = {}; if (!tea_util_1.default.isUnset(this._globalParameters)) { let globalParams = this._globalParameters; if (!tea_util_1.default.isUnset(globalParams.queries)) { globalQueries = globalParams.queries; } if (!tea_util_1.default.isUnset(globalParams.headers)) { globalHeaders = globalParams.headers; } } let requestContext = new $SPI.InterceptorContextRequest({ headers: Object.assign(Object.assign(Object.assign({}, globalHeaders), request.headers), headers), query: Object.assign(Object.assign({}, globalQueries), request.query),