UNPKG

madeline-ton

Version:

Pure JS client-side implementation of the Telegram TON blockchain protocol

71 lines (62 loc) 1.8 kB
"use strict"; 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;