diff --git a/doc/api/http_api.md b/doc/api/http_api.md index d51f42c45..335efb3cd 100644 --- a/doc/api/http_api.md +++ b/doc/api/http_api.md @@ -206,6 +206,10 @@ Group pads are normal pads, but with the name schema GROUPID$PADNAME. A security * **padUsersCount(padID)** returns the number of user that are currently editing this pad

*Example returns:* * `{code: 0, message:"ok", data: {padUsersCount: 5}}` +* **padUsers(padID)** returns the list of users that are currently editing this pad

*Example returns:* + * `{code: 0, message:"ok", data: {padUsers: [{colorId:"#c1a9d9","name":"username1","timestamp":1345228793126},{"colorId":"#d9a9cd","name":"Hmmm","timestamp":1345228796042}]}}` + * `{code: 0, message:"ok", data: {padUsers: []}}` + * **deletePad(padID)** deletes a pad

*Example returns:* * `{code: 0, message:"ok", data: null}` * `{code: 1, message:"padID does not exist", data: null}` diff --git a/src/node/db/API.js b/src/node/db/API.js index 64ddef68b..f0f1ebd44 100644 --- a/src/node/db/API.js +++ b/src/node/db/API.js @@ -48,6 +48,7 @@ exports.createGroupPad = groupManager.createGroupPad; exports.createAuthor = authorManager.createAuthor; exports.createAuthorIfNotExistsFor = authorManager.createAuthorIfNotExistsFor; exports.listPadsOfAuthor = authorManager.listPadsOfAuthor; +exports.padUsers = padMessageHandler.padUsers; exports.padUsersCount = padMessageHandler.padUsersCount; /**********************/ diff --git a/src/node/handler/APIHandler.js b/src/node/handler/APIHandler.js index 4e16d56e5..4d3b38ddd 100644 --- a/src/node/handler/APIHandler.js +++ b/src/node/handler/APIHandler.js @@ -67,6 +67,7 @@ var functions = { "isPasswordProtected" : ["padID"], "listAuthorsOfPad" : ["padID"], "padUsersCount" : ["padID"], + "padUsers" : ["padID"], "sendClientsMessage" : ["padID", "msg"] }; diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index 6a2dcaf20..913433b01 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -1410,3 +1410,26 @@ exports.padUsersCount = function (padID, callback) { callback(null, {padUsersCount: pad2sessions[padID].length}); } } + +/** + * Get the list of users in a pad + */ +exports.padUsers = function (padID, callback) { + if (!pad2sessions[padID] || typeof pad2sessions[padID] != typeof []) { + callback(null, {padUsers: []}); + } else { + var authors = []; + for ( var ix in sessioninfos ) { + if ( sessioninfos[ix].padId !== padID ) { + continue; + } + var aid = sessioninfos[ix].author; + authorManager.getAuthor( aid, function ( err, author ) { + authors.push( author ); + if ( authors.length === pad2sessions[padID].length ) { + callback(null, {padUsers: authors}); + } + } ); + } + } +}