UNPKG

ps2census

Version:

Client to connect to the PS2 Event Stream websocket.

112 lines 5.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.StreamHandler = void 0; const formatters_1 = require("../utils/formatters"); const achievement_earned_event_1 = require("./events/achievement-earned.event"); const battle_rank_up_event_1 = require("./events/battle-rank-up.event"); const continent_lock_event_1 = require("./events/continent-lock.event"); const death_event_1 = require("./events/death.event"); const facility_control_event_1 = require("./events/facility-control.event"); const gain_experience_event_1 = require("./events/gain-experience.event"); const item_added_event_1 = require("./events/item-added.event"); const metagame_event_1 = require("./events/metagame.event"); const player_facility_capture_event_1 = require("./events/player-facility-capture.event"); const player_facility_defend_event_1 = require("./events/player-facility-defend.event"); const player_login_event_1 = require("./events/player-login.event"); const player_logout_event_1 = require("./events/player-logout.event"); const skill_added_event_1 = require("./events/skill-added.event"); const vehicle_destroy_event_1 = require("./events/vehicle-destroy.event"); const next_tick_1 = __importDefault(require("../utils/next-tick")); class StreamHandler { constructor(client, stream, filter) { this.client = client; this.stream = stream; this.filter = filter; this.prepareListeners(); } prepareListeners() { this.stream.on('message', msg => { if ('service' in msg && msg.service === 'event') { switch (msg.type) { case 'serviceStateChanged': this.handleServerStateChanged(msg); break; case 'serviceMessage': if ('event_name' in msg.payload) this.handleEvent(msg.payload); break; } } else if ('subscription' in msg) { this.handleSubscription(msg.subscription); } }); } handleEvent(event) { const wrapped = this.wrapEvent(event); if (!wrapped) return; if (!this.filter.filter(wrapped)) { (0, next_tick_1.default)(() => { this.client.emit('ps2Event', wrapped); this.client.emit(wrapped.emit, wrapped); }); } else { (0, next_tick_1.default)(() => { this.client.emit('duplicate', wrapped); }); } } handleSubscription(subscription) { (0, next_tick_1.default)(() => { this.client.emit('subscribed', subscription); }); } handleServerStateChanged(state) { const id = state.detail.match(/\d+/)[0]; if (id) { const online = (0, formatters_1.stringToBoolean)(state.online); (0, next_tick_1.default)(() => { this.client.emit('serviceState', id, online, state.detail); }); } } wrapEvent(event) { switch (event.event_name) { case 'AchievementEarned': return new achievement_earned_event_1.AchievementEarned(this.client, event); case 'BattleRankUp': return new battle_rank_up_event_1.BattleRankUp(this.client, event); case 'ContinentLock': return new continent_lock_event_1.ContinentLock(this.client, event); case 'Death': return new death_event_1.Death(this.client, event); case 'FacilityControl': return new facility_control_event_1.FacilityControl(this.client, event); case 'GainExperience': return new gain_experience_event_1.GainExperience(this.client, event); case 'ItemAdded': return new item_added_event_1.ItemAdded(this.client, event); case 'MetagameEvent': return new metagame_event_1.MetagameEvent(this.client, event); case 'PlayerFacilityCapture': return new player_facility_capture_event_1.PlayerFacilityCapture(this.client, event); case 'PlayerFacilityDefend': return new player_facility_defend_event_1.PlayerFacilityDefend(this.client, event); case 'PlayerLogin': return new player_login_event_1.PlayerLogin(this.client, event); case 'PlayerLogout': return new player_logout_event_1.PlayerLogout(this.client, event); case 'SkillAdded': return new skill_added_event_1.SkillAdded(this.client, event); case 'VehicleDestroy': return new vehicle_destroy_event_1.VehicleDestroy(this.client, event); } } } exports.StreamHandler = StreamHandler; //# sourceMappingURL=stream.handler.js.map