@atomist/automation-client
Version:
Atomist API for software low-level client
57 lines • 2.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const stringify = require("json-stringify-safe");
const ApolloGraphClientFactory_1 = require("../../../graph/ApolloGraphClientFactory");
const health_1 = require("../../util/health");
const logger_1 = require("../../util/logger");
const AbstractRequestProcessor_1 = require("../AbstractRequestProcessor");
const RequestProcessor_1 = require("../RequestProcessor");
const WebSocketMessageClient_1 = require("./WebSocketMessageClient");
class DefaultWebSocketRequestProcessor extends AbstractRequestProcessor_1.AbstractRequestProcessor {
constructor(automations, configuration, listeners = []) {
super(automations, listeners);
this.automations = automations;
this.configuration = configuration;
this.listeners = listeners;
health_1.registerHealthIndicator(() => {
if (this.webSocket && this.registration) {
return { status: health_1.HealthStatus.Up, detail: "WebSocket connection established" };
}
else {
return { status: health_1.HealthStatus.Down, detail: "WebSocket disconnected" };
}
});
}
onRegistration(registration) {
logger_1.logger.info("Registration successful: %s", stringify(registration));
this.configuration.ws.session = registration;
this.registration = registration;
this.graphClients =
new ApolloGraphClientFactory_1.ApolloGraphClientFactory(this.configuration, () => `Bearer ${registration.jwt}`);
}
onConnect(ws) {
logger_1.logger.info("WebSocket connection established. Listening for incoming messages");
this.webSocket = ws;
this.listeners.forEach(l => l.registrationSuccessful(this));
}
onDisconnect() {
this.webSocket = null;
this.registration = null;
}
sendStatusMessage(payload, ctx) {
return Promise.resolve(WebSocketMessageClient_1.sendMessage(payload, this.webSocket));
}
createGraphClient(event) {
return this.graphClients.createGraphClient(event);
}
createMessageClient(event) {
if (RequestProcessor_1.isCommandIncoming(event)) {
return new WebSocketMessageClient_1.WebSocketCommandMessageClient(event, this.webSocket);
}
else if (RequestProcessor_1.isEventIncoming(event)) {
return new WebSocketMessageClient_1.WebSocketEventMessageClient(event, this.webSocket);
}
}
}
exports.DefaultWebSocketRequestProcessor = DefaultWebSocketRequestProcessor;
//# sourceMappingURL=DefaultWebSocketRequestProcessor.js.map