madeline-ton
Version:
Pure JS client-side implementation of the Telegram TON blockchain protocol
71 lines (62 loc) • 1.8 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _stream = _interopRequireDefault(require("../TL/stream"));
var Http =
/*#__PURE__*/
function () {
function Http() {
(0, _classCallCheck2["default"])(this, Http);
}
(0, _createClass2["default"])(Http, [{
key: "connect",
value: function connect(ctx) {
this.uri = ctx.getUri('http');
return Promise.resolve();
}
}, {
key: "write",
value: function write(payload) {
var xhr = new XMLHttpRequest();
xhr.onload = this.onHttpMessage.bind({
xhr: xhr,
onMessage: this.onMessage
});
xhr.open('POST', this.uri, true);
xhr.responseType = 'arraybuffer';
xhr.send(payload.getBuffer());
}
}, {
key: "getBuffer",
value: function getBuffer(length) {
var s = new _stream["default"](new Uint32Array(5 + (length || 0)));
s.pos += 5;
s.initPos = 0;
return s;
}
}, {
key: "onHttpMessage",
value: function onHttpMessage() {
if (this.xhr.status === 200) {
return this.onMessage(new _stream["default"](this.xhr.response));
}
this.onMessage(new _stream["default"](new Uint32Array(1).buffer).writeSignedInt(-this.xhr.status).reset());
}
}, {
key: "isHttp",
value: function isHttp() {
return true;
}
}, {
key: "close",
value: function close() {}
}]);
return Http;
}();
var _default = Http;
exports["default"] = _default;