UNPKG

baqend

Version:

Baqend JavaScript SDK

236 lines 16.6 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NodeConnector = void 0; var https_1 = __importDefault(require("https")); var http_1 = __importDefault(require("http")); var Connector_1 = require("./Connector"); var error_1 = require("../error"); var version_1 = require("../version"); var NodeConnector = /** @class */ (function (_super) { __extends(NodeConnector, _super); function NodeConnector(host, port, secure, basePath) { var _this = _super.call(this, host, port, secure, basePath) || this; _this.cookie = null; _this.http = secure ? https_1.default : http_1.default; return _this; } NodeConnector.isUsable = function () { // prevent using when it is shimmed return !!(http_1.default && http_1.default.Server); }; /** * @inheritDoc */ NodeConnector.prototype.prepareRequest = function (message) { if (!message.header('user-agent')) { message.header('user-agent', "baqend-sdk-js/".concat(version_1.SDK_VERSION)); } return _super.prototype.prepareRequest.call(this, message); }; /** * @inheritDoc */ NodeConnector.prototype.doSend = function (message, request, receive) { var _this = this; var entity = request.entity; var type = request.type; var responseType = message.responseType(); if (this.cookie && message.withCredentials) { request.headers.cookie = this.cookie; } var nodeRequest = __assign(__assign({}, request), { host: this.host, port: this.port, path: this.basePath + request.path }); var req = this.http.request(nodeRequest, function (res) { var cookie = res.headers['set-cookie']; if (cookie) { // cookie may be an array, convert it to a string _this.cookie = _this.parseCookie("".concat(cookie)); } var status = res.statusCode || 0; if (status >= 400) { responseType = 'json'; } if (responseType === 'stream') { receive({ status: status, headers: res.headers, entity: res, }); return; } var binary = responseType && responseType !== 'text' && responseType !== 'json'; var chunks = []; if (!binary) { res.setEncoding('utf-8'); } res.on('data', function (chunk) { chunks.push(chunk); }); res.on('end', function () { receive({ status: status, headers: res.headers, entity: binary ? Buffer.concat(chunks) : chunks.join(''), }); }); }); req.on('error', function (e) { receive({ status: 0, headers: {}, error: e, }); }); if (type === 'stream') { entity.pipe(req); } else if (type === 'blob') { entity.arrayBuffer() .then(function (buffer) { return req.end(Buffer.from(buffer)); }) .catch(function (e) { return req.destroy(e); }); } else if (type === 'buffer') { req.end(entity); } else if (type) { req.end(entity, 'utf8'); } else { req.end(); } }; /** * Parse the cookie header * @param header * @return */ NodeConnector.prototype.parseCookie = function (header) { var parts = header.split(';'); for (var i = 0, len = parts.length; i < len; i += 1) { var part = parts[i]; if (part.trim().indexOf('Expires=') === 0) { var date = Date.parse(part.substring(8)); if (date < Date.now()) { return null; } } } return parts[0]; }; /** * @inheritDoc */ NodeConnector.prototype.toFormat = function (message) { var type = message.request.type; if (type) { var entity = message.request.entity; var mimeType = message.mimeType(); switch (type) { case 'stream': if (!message.contentLength()) { throw new error_1.PersistentError('You must specify a content length while making a stream based upload.'); } break; case 'buffer': break; case 'arraybuffer': type = 'buffer'; entity = Buffer.from(entity); break; case 'data-url': { var match = entity.match(/^data:(.+?)(;base64)?,(.*)$/); var isBase64 = match[2]; // eslint-disable-next-line prefer-destructuring entity = match[3]; type = 'buffer'; mimeType = mimeType || match[1]; if (isBase64) { entity = Buffer.from(entity, 'base64'); } else { entity = Buffer.from(decodeURIComponent(entity), 'utf8'); } break; } case 'base64': type = 'buffer'; entity = Buffer.from(entity, 'base64'); break; case 'json': if (typeof entity !== 'string') { entity = JSON.stringify(entity); } break; case 'text': break; case 'blob': if (typeof Blob !== 'undefined') { mimeType = mimeType || entity.type; break; } // fall through default: throw new Error("The request type ".concat(type, " is not supported")); } message.entity(entity, type).mimeType(mimeType); } }; /** * @inheritDoc */ NodeConnector.prototype.fromFormat = function (response, entity, type) { switch (type) { case 'json': return JSON.parse(entity); case 'data-url': case 'base64': { var base64 = entity.toString('base64'); if (type === 'base64') { return base64; } return "data:".concat(response.headers['content-type'], ";base64,").concat(base64); } case 'arraybuffer': return entity.buffer.slice(entity.byteOffset, entity.byteOffset + entity.byteLength); case 'blob': if (typeof Blob !== 'undefined') { return new Blob([entity.buffer], { type: response.headers['content-type'] }); } // fall through default: return entity; } }; return NodeConnector; }(Connector_1.Connector)); exports.NodeConnector = NodeConnector; Connector_1.Connector.connectors.push(NodeConnector); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZUNvbm5lY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb25uZWN0b3IvTm9kZUNvbm5lY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUEwQjtBQUMxQiw4Q0FBd0I7QUFDeEIseUNBRXFCO0FBQ3JCLGtDQUEyQztBQUczQyxzQ0FBeUM7QUFFekM7SUFBbUMsaUNBQVM7SUFVMUMsdUJBQVksSUFBWSxFQUFFLElBQVksRUFBRSxNQUFlLEVBQUUsUUFBZ0I7UUFBekUsWUFDRSxrQkFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsU0FHcEM7UUFGQyxLQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixLQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLENBQUMsQ0FBQyxjQUFJLENBQUM7O0lBQ3BDLENBQUM7SUFUTSxzQkFBUSxHQUFmO1FBQ0UsbUNBQW1DO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBSSxJQUFJLGNBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBUUQ7O09BRUc7SUFDSCxzQ0FBYyxHQUFkLFVBQWUsT0FBZ0I7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDakMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsd0JBQWlCLHFCQUFXLENBQUUsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxpQkFBTSxjQUFjLFlBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsOEJBQU0sR0FBTixVQUFPLE9BQWdCLEVBQUUsT0FBZ0IsRUFBRSxPQUFxQztRQUFoRixpQkF5RUM7UUF4RVMsSUFBQSxNQUFNLEdBQUssT0FBTyxPQUFaLENBQWE7UUFDbkIsSUFBQSxJQUFJLEdBQUssT0FBTyxLQUFaLENBQWE7UUFDekIsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFO1lBQzFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDdEM7UUFFRCxJQUFNLFdBQVcseUJBQ1osT0FBTyxLQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQ2pGLENBQUM7UUFDRixJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsVUFBQyxHQUF5QjtZQUNuRSxJQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pDLElBQUksTUFBTSxFQUFFO2dCQUNWLGlEQUFpRDtnQkFDakQsS0FBSSxDQUFDLE1BQU0sR0FBRyxLQUFJLENBQUMsV0FBVyxDQUFDLFVBQUcsTUFBTSxDQUFFLENBQUMsQ0FBQzthQUM3QztZQUVELElBQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO1lBQ25DLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRTtnQkFDakIsWUFBWSxHQUFHLE1BQU0sQ0FBQzthQUN2QjtZQUVELElBQUksWUFBWSxLQUFLLFFBQVEsRUFBRTtnQkFDN0IsT0FBTyxDQUFDO29CQUNOLE1BQU0sUUFBQTtvQkFDTixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQTJDO29CQUN4RCxNQUFNLEVBQUUsR0FBRztpQkFDWixDQUFDLENBQUM7Z0JBQ0gsT0FBTzthQUNSO1lBRUQsSUFBTSxNQUFNLEdBQUcsWUFBWSxJQUFJLFlBQVksS0FBSyxNQUFNLElBQUksWUFBWSxLQUFLLE1BQU0sQ0FBQztZQUNsRixJQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMxQjtZQUVELEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQUMsS0FBc0I7Z0JBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUM7WUFFSCxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRTtnQkFDWixPQUFPLENBQUM7b0JBQ04sTUFBTSxRQUFBO29CQUNOLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBMkM7b0JBQ3hELE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztpQkFDckUsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQUMsQ0FBUTtZQUN2QixPQUFPLENBQUM7Z0JBQ04sTUFBTSxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLENBQUM7YUFDVCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxXQUFXLEVBQUU7aUJBQ2pCLElBQUksQ0FBQyxVQUFDLE1BQWMsSUFBSyxPQUFBLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUE1QixDQUE0QixDQUFDO2lCQUN0RCxLQUFLLENBQUMsVUFBQyxDQUFRLElBQUssT0FBQSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFkLENBQWMsQ0FBQyxDQUFBO1NBQ3ZDO2FBQU0sSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzVCLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakI7YUFBTSxJQUFJLElBQUksRUFBRTtZQUNmLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pCO2FBQU07WUFDTCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUNBQVcsR0FBWCxVQUFZLE1BQWM7UUFDeEIsSUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkQsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3pDLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ3JCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2FBQ0Y7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNILGdDQUFRLEdBQVIsVUFBUyxPQUFnQjtRQUNqQixJQUFBLElBQUksR0FBSyxPQUFPLENBQUMsT0FBTyxLQUFwQixDQUFxQjtRQUUvQixJQUFJLElBQUksRUFBRTtZQUNGLElBQUEsTUFBTSxHQUFLLE9BQU8sQ0FBQyxPQUFPLE9BQXBCLENBQXFCO1lBQ2pDLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUVsQyxRQUFRLElBQUksRUFBRTtnQkFDWixLQUFLLFFBQVE7b0JBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRTt3QkFDNUIsTUFBTSxJQUFJLHVCQUFlLENBQUMsdUVBQXVFLENBQUMsQ0FBQztxQkFDcEc7b0JBQ0QsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsTUFBTTtnQkFDUixLQUFLLGFBQWE7b0JBQ2hCLElBQUksR0FBRyxRQUFRLENBQUM7b0JBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM3QixNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLENBQUM7b0JBQ2YsSUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO29CQUMxRCxJQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFCLGdEQUFnRDtvQkFDaEQsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFbEIsSUFBSSxHQUFHLFFBQVEsQ0FBQztvQkFDaEIsUUFBUSxHQUFHLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLElBQUksUUFBUSxFQUFFO3dCQUNaLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztxQkFDeEM7eUJBQU07d0JBQ0wsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7cUJBQzFEO29CQUVELE1BQU07aUJBQ1A7Z0JBQ0QsS0FBSyxRQUFRO29CQUNYLElBQUksR0FBRyxRQUFRLENBQUM7b0JBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDdkMsTUFBTTtnQkFDUixLQUFLLE1BQU07b0JBQ1QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7d0JBQzlCLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNqQztvQkFDRCxNQUFNO2dCQUNSLEtBQUssTUFBTTtvQkFDVCxNQUFNO2dCQUNSLEtBQUssTUFBTTtvQkFDVCxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRTt3QkFDL0IsUUFBUSxHQUFHLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDO3dCQUNuQyxNQUFNO3FCQUNQO2dCQUNELGVBQWU7Z0JBQ2pCO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQW9CLElBQUksc0JBQW1CLENBQUMsQ0FBQzthQUNoRTtZQUVELE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGtDQUFVLEdBQVYsVUFBVyxRQUFrQixFQUFFLE1BQVcsRUFBRSxJQUE2QjtRQUN2RSxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsS0FBSyxVQUFVLENBQUM7WUFDaEIsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDYixJQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7b0JBQ3JCLE9BQU8sTUFBTSxDQUFDO2lCQUNmO2dCQUVELE9BQU8sZUFBUSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxxQkFBVyxNQUFNLENBQUUsQ0FBQzthQUNwRTtZQUNELEtBQUssYUFBYTtnQkFDaEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZGLEtBQUssTUFBTTtnQkFDVCxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRTtvQkFDL0IsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDOUU7WUFDRCxlQUFlO1lBQ2pCO2dCQUNFLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQXZORCxDQUFtQyxxQkFBUyxHQXVOM0M7QUF2Tlksc0NBQWE7QUF5TjFCLHFCQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyJ9