aws-opensearch-connection
Version:
AWS Opensearch connection for the @opensearch-project/opensearch ES client
67 lines (66 loc) • 2.48 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.awsGetCredentials = exports.createAWSConnection = void 0;
const global_1 = require("aws-sdk/global");
const http_1 = require("http");
const https_1 = require("https");
const aws4_1 = require("aws4");
const opensearch_1 = require("@opensearch-project/opensearch");
function generateAWSConnectionClass(credentials) {
return class AWSConnection extends opensearch_1.Connection {
constructor(opts) {
super(opts);
this.makeRequest = this.signedRequest;
}
signedRequest(reqParams) {
const request = (reqParams === null || reqParams === void 0 ? void 0 : reqParams.protocol) === 'https:' ? https_1.request : http_1.request;
return request((0, aws4_1.sign)(Object.assign(Object.assign({}, reqParams), { service: 'es' }), credentials));
}
};
}
function generateAWSTransportClass(credentials) {
return class AWSTransport extends opensearch_1.Transport {
request(params, options, callback = undefined) {
if (typeof options === 'function') {
callback = options;
options = {};
}
if (typeof params === 'function' || params == null) {
callback = params;
params = {};
options = {};
}
// Wrap promise API
const isPromiseCall = typeof callback !== 'function';
if (isPromiseCall) {
return credentials.getPromise().then(() => super.request(params, options, callback));
}
// Wrap callback API
credentials.get(err => {
if (err) {
callback(err, null);
return;
}
return super.request(params, options, callback);
});
}
};
}
function createAWSConnection(awsCredentials) {
return {
Connection: generateAWSConnectionClass(awsCredentials),
Transport: generateAWSTransportClass(awsCredentials)
};
}
exports.createAWSConnection = createAWSConnection;
const awsGetCredentials = () => {
return new Promise((resolve, reject) => {
global_1.config.getCredentials(err => {
if (err) {
return reject(err);
}
resolve(global_1.config.credentials);
});
});
};
exports.awsGetCredentials = awsGetCredentials;
;