| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /* 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)
- })
- }
- }
|