UNPKG

nicolive-api

Version:
130 lines (113 loc) 5.45 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; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var MessageServer = function () { _createClass(MessageServer, null, [{ key: "firstMessageServer", value: function firstMessageServer(isChannel) { return isChannel ? MessageServer.CHANNEL_MESSAGE_SERVERS[0] : MessageServer.COMMUNITY_MESSAGE_SERVERS[0]; } }, { key: "lastMessageServer", value: function lastMessageServer(isChannel) { return isChannel ? MessageServer.CHANNEL_MESSAGE_SERVERS[MessageServer.CHANNEL_MESSAGE_SERVERS.length - 1] : MessageServer.COMMUNITY_MESSAGE_SERVERS[MessageServer.COMMUNITY_MESSAGE_SERVERS.length - 1]; } }, { key: "COMMUNITY_MESSAGE_SERVERS", get: function get() { return [[101, 2805], [102, 2815], [103, 2825], [104, 2835], [105, 2845], [101, 2806], [102, 2816], [103, 2826], [104, 2836], [105, 2846], [101, 2807], [102, 2817], [103, 2827], [104, 2837], [105, 2847], [101, 2808], [102, 2818], [103, 2828], [104, 2838], [105, 2848], [101, 2809], [102, 2819], [103, 2829], [104, 2839], [105, 2849], [101, 2810], [102, 2820], [103, 2830], [104, 2840], [105, 2850], [101, 2811], [102, 2821], [103, 2831], [104, 2841], [105, 2851], [101, 2812], [102, 2822], [103, 2832], [104, 2842], [105, 2852], [101, 2813], [102, 2823], [103, 2833], [104, 2843], [105, 2853], [101, 2814], [102, 2824], [103, 2834], [104, 2844], [105, 2854]]; } }, { key: "CHANNEL_MESSAGE_SERVERS", get: function get() { return [[101, 2815], [102, 2828], [103, 2841], [104, 2854], [105, 2867], [106, 2880], [101, 2816], [102, 2829], [103, 2842], [104, 2855], [105, 2868], [106, 2881], [101, 2817], [102, 2830], [103, 2843], [104, 2856], [105, 2869], [106, 2882]]; } }]); function MessageServer(_ref) { var addr = _ref.addr, port = _ref.port, thread = _ref.thread, room = _ref.room; _classCallCheck(this, MessageServer); this.addr = addr; this.port = ~~port; this.thread = ~~thread; this.room = room; } _createClass(MessageServer, [{ key: "previous", value: function previous() { return this.neighbor(-1); } }, { key: "next", value: function next() { return this.neighbor(1); } }, { key: "neighbor", value: function neighbor(count) { var thread = this.thread + count; var serverNumber = ~~this.addr.match(/\D+(\d+)\D+/)[1]; var serverIndex = this.getServerIndex(serverNumber); if (serverIndex === -1) return null; var server = null; if (count === -1 && this.isFirstMessageServer(serverNumber)) { server = MessageServer.lastMessageServer(this.isChannel()); } else if (count === 1 && this.isLastMessageServer(serverNumber)) { server = MessageServer.firstMessageServer(this.isChannel()); } else { var index = serverIndex + count; server = this.isChannel() ? MessageServer.CHANNEL_MESSAGE_SERVERS[index] : MessageServer.COMMUNITY_MESSAGE_SERVERS[index]; } var room = null; if (count === 1) { room = this.room.next(); } else { room = this.room.previous(); } var addr = this.buildMessageServerAddr({ addr: this.addr, serverNumber: server[0] }); return new MessageServer({ addr: addr, port: server[1], thread: thread, room: room }); } }, { key: "isChannel", value: function isChannel() { return (/omsg\d+/.test(this.addr) ); } }, { key: "isFirstMessageServer", value: function isFirstMessageServer(serverNumber) { var firstMessageServer = MessageServer.firstMessageServer(this.isChannel()); return firstMessageServer[0] === serverNumber && firstMessageServer[1] === this.port; } }, { key: "isLastMessageServer", value: function isLastMessageServer(serverNumber) { var lastMessageServer = MessageServer.lastMessageServer(this.isChannel()); return lastMessageServer[0] === serverNumber && lastMessageServer[1] === this.port; } }, { key: "getServerIndex", value: function getServerIndex(serverNumber) { var _this = this; var servers = this.isChannel() ? MessageServer.CHANNEL_MESSAGE_SERVERS : MessageServer.COMMUNITY_MESSAGE_SERVERS; return servers.findIndex(function (server) { return server[0] === serverNumber && server[1] === _this.port; }); } }, { key: "buildMessageServerAddr", value: function buildMessageServerAddr(_ref2) { var addr = _ref2.addr, serverNumber = _ref2.serverNumber; var matched = addr.match(/(\D+)\d+(\D+)/); return "" + matched[1] + serverNumber + matched[2]; } }]); return MessageServer; }(); exports.default = MessageServer;