UNPKG

gpii-universal

Version:

Cross platform, core components of the GPII personalization infrastructure.

55 lines (48 loc) 2.07 kB
"use strict"; var fluid = require("infusion"); var gpii = fluid.registerNamespace("gpii"); fluid.registerNamespace("gpii.flowManager"); fluid.defaults("gpii.flowManager.browserChannel", { gradeNames: ["fluid.modelComponent"] }); fluid.defaults("gpii.flowManager.browserChannel.handler", { gradeNames: ["kettle.request.ws", "gpii.flowManager.sessionAware"], listeners: { onReceiveMessage: { funcName: "gpii.flowManager.browserChannel.receiveMessage", args: [ "{that}", "{arguments}.1", "{flowManager}.solutionsRegistryDataSource", "{deviceReporter}.platformReporter" ] } } }); gpii.flowManager.browserChannel.sendError = function (request, message) { fluid.log("Sending browserChannel error ", message); var error = { isError: true, message: message }; request.sendMessage(error); // These codes bizarrely are not HTTP codes, but listed here: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent request.ws.close(1008, "Solution id not authorized"); }; gpii.flowManager.browserChannel.receiveMessage = function (that, message, solutionsRegistryDataSource, platformReporter) { var solutionId = message.payload.solutionId; if (that.established) { gpii.flowManager.browserChannel.sendError(that, "Connection already established - cannot send a second connect message"); } solutionsRegistryDataSource.get({os: platformReporter.reportPlatform().id}, function onSuccess(entries) { if (!(solutionId in entries)) { gpii.flowManager.browserChannel.sendError(that, "Rejecting a connection request from '" + solutionId + "'. The solution id was not found in the solutions registry"); } else { gpii.settingsHandlers.webSockets.instance.addClient(solutionId, that); that.established = true; } }, function (error) { gpii.flowManager.browserChannel.sendError(that, error.message); }); };