UNPKG

baqend

Version:

Baqend JavaScript SDK

226 lines 15.9 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 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.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZUNvbm5lY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb25uZWN0b3IvTm9kZUNvbm5lY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUEwQjtBQUMxQiw4Q0FBd0I7QUFDeEIseUNBRXFCO0FBQ3JCLGtDQUEyQztBQUkzQztJQUFtQyxpQ0FBUztJQVUxQyx1QkFBWSxJQUFZLEVBQUUsSUFBWSxFQUFFLE1BQWUsRUFBRSxRQUFnQjtRQUF6RSxZQUNFLGtCQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxTQUdwQztRQUZDLEtBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLEtBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsQ0FBQyxDQUFDLGNBQUksQ0FBQzs7SUFDcEMsQ0FBQztJQVRNLHNCQUFRLEdBQWY7UUFDRSxtQ0FBbUM7UUFDbkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFJLElBQUksY0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFRRDs7T0FFRztJQUNILDhCQUFNLEdBQU4sVUFBTyxPQUFnQixFQUFFLE9BQWdCLEVBQUUsT0FBcUM7UUFBaEYsaUJBeUVDO1FBeEVTLElBQUEsTUFBTSxHQUFLLE9BQU8sT0FBWixDQUFhO1FBQ25CLElBQUEsSUFBSSxHQUFLLE9BQU8sS0FBWixDQUFhO1FBQ3pCLElBQUksWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUMxQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3RDO1FBRUQsSUFBTSxXQUFXLHlCQUNaLE9BQU8sS0FB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