alwaysai
Version:
The alwaysAI command-line interface (CLI)
48 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const http = require("http");
const https = require("https");
const url_1 = require("url");
const coded_error_1 = require("@carnesen/coded-error");
const cloud_api_1 = require("@alwaysai/cloud-api");
function SendRpcData(config = {}) {
const { cloudApiUrl = cloud_api_1.CLOUD_API_URL, bearerToken: idToken } = config;
const { protocol, hostname, port } = new url_1.URL(cloudApiUrl);
const headers = {
'Content-Type': 'application/json',
};
if (idToken) {
headers.Authorization = `Bearer ${idToken}`;
}
return function sendRpcData(data) {
return new Promise((resolve, reject) => {
const req = (protocol === 'http:' ? http : https).request({
hostname,
port,
method: 'POST',
path: cloud_api_1.CLOUD_API_RPC_PATH,
headers: Object.assign({}, headers, { 'Content-Length': data.length }),
});
req.end(data);
req.once('response', (res) => {
let responseData = '';
res.on('data', chunk => {
responseData += chunk;
});
res.on('end', () => {
if (res.statusCode < 599) {
resolve(responseData);
}
else {
reject(new coded_error_1.CodedError(`Server responded status ${res.statusCode}`, res.statusCode));
}
});
});
req.on('error', (err) => {
reject(new coded_error_1.CodedError(`http request failed "${err.message}"`, err.code));
});
});
};
}
exports.SendRpcData = SendRpcData;
//# sourceMappingURL=send-rpc-data.js.map