node-groupme
Version:
The only GroupMe API library that isn't a million years old.
61 lines • 2.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const faye_1 = __importDefault(require("faye"));
const handlers_1 = __importDefault(require("./handlers"));
// Faye.logger = console;
class WS {
constructor(client) {
this.init = async () => {
return new Promise((resolve, reject) => {
if (!this.client.user)
return reject('Client user must be defined before init');
this.faye = new faye_1.default.Client('https://push.groupme.com/faye', {
timeout: 30,
retry: 5,
});
this.faye.addExtension({
outgoing: (msg, callback) => {
if (!msg.channel.match(/\/meta\/(?!subscribe)/))
msg.ext = { access_token: this.client.token };
callback(msg);
},
incoming: (msg, callback) => {
if (!msg.data?.type)
return callback(msg);
if (msg.data.type in handlers_1.default)
handlers_1.default[msg.data.type](this.client, msg);
else
console.log(`Unknown websocket message type: ${msg.data.type}`, msg);
callback(msg);
},
});
this.faye.subscribe(`/user/${this.client.user.id}`).then(() => resolve());
// this.debug()
});
};
this.client = client;
}
async subscribeToGroup(id) {
return await this.faye.subscribe(`/group/${id}`);
}
async close() {
return await this.faye.disconnect();
}
debug() {
this.faye.addExtension({
outgoing: (msg, callback) => {
console.log('[SENT]', msg);
callback(msg);
},
incoming: (msg, callback) => {
console.log('[RECD]', msg);
callback(msg);
},
});
}
}
exports.default = WS;
//# sourceMappingURL=Websocket.js.map