| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /* eslint-disable
- camelcase,
- handle-callback-err,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- let HttpController;
- const async = require("async");
- module.exports = (HttpController = {
- // The code in this controller is hard to unit test because of a lot of
- // dependencies on internal socket.io methods. It is not critical to the running
- // of ShareLaTeX, and is only used for getting stats about connected clients,
- // and for checking internal state in acceptance tests. The acceptances tests
- // should provide appropriate coverage.
- _getConnectedClientView(ioClient, callback) {
- if (callback == null) { callback = function(error, client) {}; }
- const client_id = ioClient.id;
- const {project_id, user_id, first_name, last_name, email, connected_time} = ioClient.ol_context;
- const client = {client_id, project_id, user_id, first_name, last_name, email, connected_time};
- client.rooms = [];
- for (const name in ioClient.manager.roomClients[client_id]) {
- const joined = ioClient.manager.roomClients[client_id][name];
- if (joined && (name !== "")) {
- client.rooms.push(name.replace(/^\//, "")); // Remove leading /
- }
- }
- return callback(null, client);
- },
- getConnectedClients(req, res, next) {
- const io = req.app.get("io");
- const ioClients = io.sockets.clients();
- return async.map(ioClients, HttpController._getConnectedClientView, function(error, clients) {
- if (error != null) { return next(error); }
- return res.json(clients);
- });
- },
-
- getConnectedClient(req, res, next) {
- const {client_id} = req.params;
- const io = req.app.get("io");
- const ioClient = io.sockets.sockets[client_id];
- if (!ioClient) {
- res.sendStatus(404);
- return;
- }
- return HttpController._getConnectedClientView(ioClient, function(error, client) {
- if (error != null) { return next(error); }
- return res.json(client);
- });
- }
- });
|