baqend
Version:
Baqend JavaScript SDK
226 lines • 15.9 kB
JavaScript
;
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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