UNPKG

nicolive-api

Version:
178 lines (150 loc) 5.82 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _MessageServer = require('./MessageServer'); var _MessageServer2 = _interopRequireDefault(_MessageServer); var _LiveViewer = require('./viewer/LiveViewer'); var _LiveViewer2 = _interopRequireDefault(_LiveViewer); var _User = require('./User'); var _User2 = _interopRequireDefault(_User); var _Live = require('./Live'); var _Live2 = _interopRequireDefault(_Live); var _Room = require('./Room'); var _Room2 = _interopRequireDefault(_Room); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Manager = function () { function Manager(playerStatus, cookie) { _classCallCheck(this, Manager); var _playerStatus$ms = playerStatus.ms, addr = _playerStatus$ms.addr, port = _playerStatus$ms.port, thread = _playerStatus$ms.thread; this.messageServer = new _MessageServer2.default({ addr: addr, port: port, thread: thread, room: new _Room2.default(playerStatus.user.room_label) }); this.user = new _User2.default(playerStatus.user); this.live = new _Live2.default(playerStatus.stream); this.viewer = null; this.cookie = cookie; this._messageServers = []; this._viewers = []; } _createClass(Manager, [{ key: 'connect', value: function connect(server) { var _this = this; return new Promise(function (resolve, reject) { var addr = server.addr, port = server.port, thread = server.thread; var viewer = new _LiveViewer2.default({ addr: addr, port: port, thread: thread, open_time: _this.live.openTime, user_id: _this.user.id, premium: _this.user.premium, mail: '184', res_from: 0, version: '20061206', cookie: _this.cookie, room: server.room }); viewer.establish(_this.viewer ? _this.viewer.connection : null); viewer.connection.on('handshaked', function () { return resolve(viewer); }); viewer.connection.on('fail', function () { return reject(); }); viewer.connection.on('comment', function (comment) { if (_this._isEjectMe(comment)) viewer.connection.emit('ejected'); }); }); } }, { key: 'seekArenaRoom', value: function seekArenaRoom() { var _this2 = this; return new Promise(function (resolve) { return _this2._connectPreviousRoom(_this2._messageServers[0], resolve); }); } }, { key: 'seekLastRoom', value: function seekLastRoom() { var _this3 = this; return new Promise(function (resolve) { return _this3._connectNextRoom(_this3._messageServers[_this3._messageServers.length - 1], resolve); }); } }, { key: 'connectAll', value: function connectAll() { var _this4 = this; return new Promise(function (resolve) { _this4._messageServers = [_this4.messageServer]; _this4.connect(_this4.messageServer).then(function (viewer) { _this4.viewer = viewer; _this4._viewers.push(viewer); return _this4.seekArenaRoom(); }).then(function () { return _this4.seekLastRoom(); }).then(function () { return resolve(); }); }); } }, { key: 'disconnect', value: function disconnect() { for (var i = 0; i < this._viewers.length; i++) { this._viewers[i].connection.destroy(); } } }, { key: '_connectPreviousRoom', value: function _connectPreviousRoom(server, res) { var _this5 = this; var previousServer = server.previous(); if (!previousServer) return res(); return new Promise(function (resolve) { _this5.connect(previousServer).then(function (viewer) { _this5._messageServers.unshift(previousServer); _this5._viewers.unshift(viewer); resolve(previousServer); }).catch(function () { return res(); }); }).then(function (server) { return _this5._connectPreviousRoom(server, res); }); } }, { key: '_connectNextRoom', value: function _connectNextRoom(server, res) { var _this6 = this; var nextServer = server.next(); if (!nextServer) return res(); return new Promise(function (resolve) { _this6.connect(nextServer).then(function (viewer) { _this6._messageServers.push(nextServer); _this6._viewers.push(viewer); resolve(nextServer); }).catch(function () { return res(); }); }).then(function (server) { return _this6._connectNextRoom(server, res); }); } }, { key: '_isEjectMe', value: function _isEjectMe(comment) { return comment.isEject() && Number(comment.attr.thread) === this.messageServer.thread && Number(comment.text.match(/\d+/)[0]) === Number(this.user.roomSeetno); } }]); return Manager; }(); exports.default = Manager;