socketcluster-server
Version:
Server module for SocketCluster
41 lines (33 loc) • 1.38 kB
JavaScript
const scErrors = require('sc-errors');
const InvalidActionError = scErrors.InvalidActionError;
function AGAction() {
this.outcome = null;
this.promise = new Promise((resolve, reject) => {
this._resolve = resolve;
this._reject = reject;
});
this.allow = (packet) => {
if (this.outcome) {
throw new InvalidActionError(`AGAction ${this.type} has already been ${this.outcome}; cannot allow`);
}
this.outcome = 'allowed';
this._resolve(packet);
};
this.block = (error) => {
if (this.outcome) {
throw new InvalidActionError(`AGAction ${this.type} has already been ${this.outcome}; cannot block`);
}
this.outcome = 'blocked';
this._reject(error);
};
}
AGAction.prototype.HANDSHAKE_WS = AGAction.HANDSHAKE_WS = 'handshakeWS';
AGAction.prototype.HANDSHAKE_SC = AGAction.HANDSHAKE_SC = 'handshakeSC';
AGAction.prototype.MESSAGE = AGAction.MESSAGE = 'message';
AGAction.prototype.TRANSMIT = AGAction.TRANSMIT = 'transmit';
AGAction.prototype.INVOKE = AGAction.INVOKE = 'invoke';
AGAction.prototype.SUBSCRIBE = AGAction.SUBSCRIBE = 'subscribe';
AGAction.prototype.PUBLISH_IN = AGAction.PUBLISH_IN = 'publishIn';
AGAction.prototype.PUBLISH_OUT = AGAction.PUBLISH_OUT = 'publishOut';
AGAction.prototype.AUTHENTICATE = AGAction.AUTHENTICATE = 'authenticate';
module.exports = AGAction;