UNPKG

mixer-client-node

Version:

A node client for connecting to mixer and the mixer services

145 lines (144 loc) 4.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Client = void 0; const OAuthClient_1 = require("./OAuthClient"); const RequestHandler_1 = require("../Util/RequestHandler"); const ChatService_1 = require("../Services/ChatService"); const ConstellationService_1 = require("../Services/ConstellationService"); class Client { constructor(client) { if (!client.clientid) { throw new Error('You must at a minimum provide the clientid in order to use this client'); } this.client = client; this.user = client.user; } /* * Client/User Related Functions */ get clientid() { return this.client.clientid; } set clientid(id) { this.client.clientid = id; } get secretid() { return this.client.secretid; } get user() { return this._user; } set user(user) { this._user = user; } /* * Authentication Related Functions */ get accessToken() { if (this.client.tokens) return this.client.tokens.access; else return undefined; } get refreshToken() { if (this.client.tokens) return this.client.tokens.refresh; else return undefined; } get tokens() { return this.client.tokens; } set tokens(tokens) { this.client.tokens = tokens; } get expires() { if (this.client.tokens) return this.client.tokens.expires; else return undefined; } get didExpire() { if (this.expires) return this.expires * 1000 <= Date.now(); else return true; } refresh() { return OAuthClient_1.refreshAuth(this); } introspect(token) { return OAuthClient_1.validateToken(this, token); } /* * Constellation Related Functions */ get constellationService() { if (!this._constellationService) this._constellationService = new ConstellationService_1.default(this.client.clientid); return this._constellationService; } subscribeTo(event) { this.constellationService.subscribe(event); } unsubscribeTo(event) { this.constellationService.unsubscribe(event); } get subscribedEvents() { return this.constellationService.subscribedEvents; } /* * Chat Related Functions */ get chatService() { if (!this._chatService) this._chatService = new ChatService_1.default(this); return this._chatService; } joinChat(channelidOrReconnect, useridOrReconnect, autoReconnect = false) { let channelid; let userid; let reconnect; if (typeof channelidOrReconnect === 'number') { channelid = channelidOrReconnect; if (typeof useridOrReconnect === 'number') { userid = useridOrReconnect; reconnect = autoReconnect; } else { userid = this.user.userid; reconnect = typeof useridOrReconnect === 'boolean' ? useridOrReconnect : false; } } else if (this.user) { channelid = this.user.channelid; userid = this.user.userid; reconnect = typeof channelidOrReconnect === 'boolean' ? channelidOrReconnect : false; } return this.chatService.join(userid, channelid, reconnect); } get connectedChannels() { return this.chatService.connectedChats; } sendChat(message, channelid) { this.chatService.sendMessage(message, channelid); } closeChat(channelid) { this.chatService.close(channelid); } /* * Misc Functions */ request(options) { options.headers = options.headers || {}; Object.assign(options.headers, { 'Client-ID': this.client.clientid, 'User-Agent': "Unsmart's Mixer-Client-Node" }); if (options.auth && this.client.tokens) Object.assign(options.headers, { Authorization: 'Bearer ' + this.client.tokens.access }); options.json = true; return RequestHandler_1.requestAPI(options); } } exports.Client = Client;