added getMappedGroup4 and createGroup

This commit is contained in:
Peter 'Pita' Martischka 2011-08-08 16:21:31 +01:00
parent de0e341b4b
commit 178b4a95ec
4 changed files with 101 additions and 10 deletions

View file

@ -21,6 +21,7 @@
var padManager = require("./PadManager"); var padManager = require("./PadManager");
var padMessageHandler = require("../handler/PadMessageHandler"); var padMessageHandler = require("../handler/PadMessageHandler");
var readOnlyManager = require("./ReadOnlyManager"); var readOnlyManager = require("./ReadOnlyManager");
var groupManager = require("./GroupManager");
var async = require("async"); var async = require("async");
/**********************/ /**********************/
@ -34,10 +35,7 @@ Example returns:
{code: 0, message:"ok", data: {groupID: 5}} {code: 0, message:"ok", data: {groupID: 5}}
*/ */
exports.createGroup = function (callback) exports.createGroup = groupManager.createGroup;
{
}
/** /**
getMappedGroup4(groupMapper) this functions helps you to map your application group ids to etherpad lite group ids getMappedGroup4(groupMapper) this functions helps you to map your application group ids to etherpad lite group ids
@ -46,10 +44,7 @@ Example returns:
{code: 0, message:"ok", data: {groupID: 7}} {code: 0, message:"ok", data: {groupID: 7}}
*/ */
exports.getMappedGroup4 = function (groupMapper, callback) exports.getMappedGroup4 = groupManager.getMappedGroup4;
{
}
/** /**
deleteGroup(groupID) deletes a group deleteGroup(groupID) deletes a group

View file

@ -18,4 +18,100 @@
* limitations under the License. * limitations under the License.
*/ */
var db = require("./DB").db;
var async = require("async");
exports.doesGroupExist = function(groupID, callback)
{
//try to get the group entry
db.get("group:" + groupID, function (err, group)
{
callback(err, group != null);
});
}
exports.createGroup = function(callback)
{
//search for non existing groupID
var groupID;
var foundNonExistingGroupID = false;
async.whilst(
function () { return !foundNonExistingGroupID; },
function (callback)
{
//generate a random 10 digit groupID
groupID = "";
for(var i=0;i<10;i++)
{
groupID+=Math.floor(Math.random()*10);
}
//check if this groupID already exisits
exports.doesGroupExist(groupID, function(err, exists)
{
foundNonExistingGroupID = !exists;
callback(err);
})
},
//we found a non existing groupID or an error happend
function (err)
{
//check for errors
if(err)
{
callback(err);
return;
}
//create the group
db.set("group:" + groupID, {pads: {}});
callback(null, {groupID: groupID});
}
);
}
exports.getMappedGroup4 = function(groupMapper, callback)
{
//ensure mapper is optional
if(typeof groupMapper != "string")
{
callback({stop: "groupMapper is no string"});
return;
}
//try to get a group for this mapper
db.get("mapper2group:"+groupMapper, function(err, groupID)
{
if(err)
{
callback(err);
return;
}
//there is no group for this mapper, let's create a group
if(groupID == null)
{
exports.createGroup(function(err, responseObj)
{
//check for errors
if(err)
{
callback(err);
return;
}
//create the mapper entry for this group
db.set("mapper2group:"+groupMapper, responseObj.groupID);
callback(null, responseObj);
});
}
//there is a group for this mapper, let's return it
else
{
callback(err, {groupID: groupID});
}
});
}

View file

@ -35,8 +35,8 @@ catch(e)
//a list of all functions //a list of all functions
var functions = { var functions = {
// "createGroup" : [], "createGroup" : [],
// "getMappedGroup4" : ["groupMapper"], "getMappedGroup4" : ["groupMapper"],
// "deleteGroup" : ["groupID"], // "deleteGroup" : ["groupID"],
// "listPads" : ["groupID"], // "listPads" : ["groupID"],
"createPad" : ["padID", "text"], "createPad" : ["padID", "text"],

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB