in lib/client.js [120:178]
async _request(verb, projectName, path, queries, body, headers, options) {
var prefix = projectName ? `${projectName}.` : '';
var suffix = queries ? `?${querystring.stringify(queries)}` : '';
var url = `http://${prefix}${this.endpoint}${path}${suffix}`;
const mergedHeaders = Object.assign({
'content-type': 'application/json',
'date': new Date().toGMTString(),
'x-log-apiversion': '0.6.0',
'x-log-signaturemethod': 'hmac-sha1'
}, headers);
const credentials = await this._getCredentials();
// support STS stoken
if (credentials.securityToken) {
mergedHeaders['x-acs-security-token'] = credentials.securityToken;
}
if (body) {
assert(Buffer.isBuffer(body), 'body must be buffer');
mergedHeaders['content-md5'] = kitx.md5(body, 'hex').toUpperCase();
mergedHeaders['content-length'] = body.length;
}
// verb, path, queries, headers
const sign = this._sign(verb, path, queries, mergedHeaders, credentials);
mergedHeaders['authorization'] = sign;
const response = await httpx.request(url, Object.assign({
method: verb,
data: body,
headers: mergedHeaders
}, options));
var responseBody = await httpx.read(response, 'utf8');
const contentType = response.headers['content-type'] || '';
if (contentType.startsWith('application/json')) {
responseBody = JSON.parse(responseBody);
}
if (responseBody.errorCode && responseBody.errorMessage) {
var err = new Error(responseBody.errorMessage);
err.code = responseBody.errorCode;
err.requestid = response.headers['x-log-requestid'];
err.name = `${err.code}Error`;
throw err;
}
if (responseBody.Error) {
var err = new Error(responseBody.Error.Message);
err.code = responseBody.Error.Code;
err.requestid = responseBody.Error.RequestId;
err.name = `${err.code}Error`;
throw err;
}
return responseBody;
}