mirror of
https://github.com/Hopiu/webapi-eca.git
synced 2026-04-18 13:51:02 +00:00
Modules are now private to user. Copy/Share logic could be added in the future
This commit is contained in:
parent
16411258a8
commit
d31e66a701
13 changed files with 186 additions and 239 deletions
|
|
@ -135,30 +135,33 @@ Fetches all available modules and return them together with the available functi
|
|||
@param {function} callback
|
||||
###
|
||||
getModules = ( user, oPayload, dbMod, callback ) ->
|
||||
dbMod.getAvailableModuleIds user.username, ( err, arrNames ) ->
|
||||
oRes = {}
|
||||
answReq = () ->
|
||||
callback
|
||||
code: 200
|
||||
message: JSON.stringify oRes
|
||||
sem = arrNames.length
|
||||
if sem is 0
|
||||
answReq()
|
||||
else
|
||||
fGetFunctions = ( id ) =>
|
||||
dbMod.getModule id, ( err, oModule ) =>
|
||||
if oModule
|
||||
oRes[id] = JSON.parse oModule.functions
|
||||
if --sem is 0
|
||||
answReq()
|
||||
fGetFunctions id for id in arrNames
|
||||
fProcessIds = ( userName ) ->
|
||||
( err, arrNames ) ->
|
||||
oRes = {}
|
||||
answReq = () ->
|
||||
callback
|
||||
code: 200
|
||||
message: JSON.stringify oRes
|
||||
sem = arrNames.length
|
||||
if sem is 0
|
||||
answReq()
|
||||
else
|
||||
fGetFunctions = ( id ) =>
|
||||
dbMod.getModule userName, id, ( err, oModule ) =>
|
||||
if oModule
|
||||
oRes[id] = JSON.parse oModule.functions
|
||||
if --sem is 0
|
||||
answReq()
|
||||
fGetFunctions id for id in arrNames
|
||||
|
||||
dbMod.getAvailableModuleIds user.username, fProcessIds user.username
|
||||
|
||||
getModuleParams = ( user, oPayload, dbMod, callback ) ->
|
||||
answ = hasRequiredParams [ 'id' ], oPayload
|
||||
if answ.code isnt 200
|
||||
callback answ
|
||||
else
|
||||
dbMod.getModuleParams oPayload.id, ( err, oPayload ) ->
|
||||
dbMod.getModuleField user.username, oPayload.id, "params", ( err, oPayload ) ->
|
||||
answ.message = oPayload
|
||||
callback answ
|
||||
|
||||
|
|
@ -192,7 +195,7 @@ forgeModule = ( user, oPayload, dbMod, callback ) =>
|
|||
if oPayload.overwrite
|
||||
storeModule user, oPayload, dbMod, callback
|
||||
else
|
||||
dbMod.getModule oPayload.id, ( err, mod ) =>
|
||||
dbMod.getModule user.username, oPayload.id, ( err, mod ) =>
|
||||
if mod
|
||||
answ.code = 409
|
||||
answ.message = 'Module name already existing: ' + oPayload.id
|
||||
|
|
@ -213,8 +216,8 @@ storeModule = ( user, oPayload, dbMod, callback ) =>
|
|||
oPayload.functions = JSON.stringify funcs
|
||||
oPayload.functionArgs = JSON.stringify cm.funcParams
|
||||
dbMod.storeModule user.username, oPayload
|
||||
if oPayload.public is 'true'
|
||||
dbMod.publish oPayload.id
|
||||
# if oPayload.public is 'true'
|
||||
# dbMod.publish oPayload.id
|
||||
callback answ
|
||||
|
||||
storeRule = ( user, oPayload, callback ) =>
|
||||
|
|
@ -278,7 +281,7 @@ commandFunctions =
|
|||
getModules user, oPayload, db.eventPollers, callback
|
||||
|
||||
get_full_event_poller: ( user, oPayload, callback ) ->
|
||||
db.eventPollers.getModule oPayload.id, ( err, obj ) ->
|
||||
db.eventPollers.getModule user.username, oPayload.id, ( err, obj ) ->
|
||||
callback
|
||||
code: 200
|
||||
message: JSON.stringify obj
|
||||
|
|
@ -297,7 +300,7 @@ commandFunctions =
|
|||
if answ.code isnt 200
|
||||
callback answ
|
||||
else
|
||||
db.eventPollers.getModuleField oPayload.id, 'functionArgs', ( err, obj ) ->
|
||||
db.eventPollers.getModuleField user.username, oPayload.id, 'functionArgs', ( err, obj ) ->
|
||||
callback
|
||||
code: 200
|
||||
message: obj
|
||||
|
|
@ -310,7 +313,7 @@ commandFunctions =
|
|||
if answ.code isnt 200
|
||||
callback answ
|
||||
else
|
||||
db.eventPollers.deleteModule oPayload.id
|
||||
db.eventPollers.deleteModule user.username, oPayload.id
|
||||
callback
|
||||
code: 200
|
||||
message: 'OK!'
|
||||
|
|
@ -325,7 +328,7 @@ commandFunctions =
|
|||
if answ.code isnt 200
|
||||
callback answ
|
||||
else
|
||||
db.actionInvokers.getModule oPayload.id, ( err, obj ) ->
|
||||
db.actionInvokers.getModule user.username, oPayload.id, ( err, obj ) ->
|
||||
callback
|
||||
code: 200
|
||||
message: JSON.stringify obj
|
||||
|
|
@ -344,7 +347,7 @@ commandFunctions =
|
|||
if answ.code isnt 200
|
||||
callback answ
|
||||
else
|
||||
db.actionInvokers.getModuleField oPayload.id, 'functionArgs', ( err, obj ) ->
|
||||
db.actionInvokers.getModuleField user.username, oPayload.id, 'functionArgs', ( err, obj ) ->
|
||||
callback
|
||||
code: 200
|
||||
message: obj
|
||||
|
|
@ -357,7 +360,7 @@ commandFunctions =
|
|||
if answ.code isnt 200
|
||||
callback answ
|
||||
else
|
||||
db.actionInvokers.deleteModule oPayload.id
|
||||
db.actionInvokers.deleteModule user.username, oPayload.id
|
||||
callback
|
||||
code: 200
|
||||
message: 'OK!'
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ updateActionModules = ( updatedRuleId ) =>
|
|||
fAddIfNewOrNotExisting = ( actionName ) =>
|
||||
moduleName = (actionName.split ' -> ')[ 0 ]
|
||||
if not oMyRule.actions[moduleName] or oMyRule.rule.id is updatedRuleId
|
||||
db.actionInvokers.getModule moduleName, ( err, obj ) =>
|
||||
db.actionInvokers.getModule userName, moduleName, ( err, obj ) =>
|
||||
if obj
|
||||
# we compile the module and pass:
|
||||
dynmod.compileString obj.data, # code
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ process.on 'message', ( msg ) ->
|
|||
fLoadModule = ( msg ) ->
|
||||
arrName = msg.rule.event.split ' -> '
|
||||
fAnonymous = () ->
|
||||
db.eventPollers.getModule arrName[ 0 ], ( err, obj ) ->
|
||||
db.eventPollers.getModule msg.user, arrName[ 0 ], ( err, obj ) ->
|
||||
if not obj
|
||||
log.warn "EP | Strange... no module retrieved: #{ arrName[0] }"
|
||||
else
|
||||
|
|
|
|||
|
|
@ -219,81 +219,74 @@ class IndexedModules
|
|||
###
|
||||
storeModule: ( userId, oModule ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.storeModule( #{ userId }, oModule )"
|
||||
@db.sadd "#{ @setname }s", oModule.id,
|
||||
replyHandler "sadd '#{ @setname }s' -> '#{ oModule.id }'"
|
||||
@db.hmset "#{ @setname }:#{ oModule.id }", oModule,
|
||||
replyHandler "hmset '#{ @setname }:#{ oModule.id }' -> [oModule]"
|
||||
@linkModule oModule.id, userId
|
||||
@db.sadd "user:#{ userId }:#{ @setname }s", oModule.id,
|
||||
replyHandler "sadd 'user:#{ userId }:#{ @setname }s' -> #{ oModule.id }"
|
||||
@db.hmset "user:#{ userId }:#{ @setname }:#{ oModule.id }", oModule,
|
||||
replyHandler "hmset 'user:#{ userId }:#{ @setname }:#{ oModule.id }' -> [oModule]"
|
||||
# @linkModule oModule.id, userId
|
||||
|
||||
#TODO add testing
|
||||
linkModule: ( mId, userId ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.linkModule( #{ mId }, #{ userId } )"
|
||||
@db.sadd "#{ @setname }:#{ mId }:users", userId,
|
||||
replyHandler "sadd '#{ @setname }:#{ mId }:users' -> '#{ userId }'"
|
||||
@db.sadd "user:#{ userId }:#{ @setname }s", mId,
|
||||
replyHandler "sadd 'user:#{ userId }:#{ @setname }s' -> #{ mId }"
|
||||
# #TODO add testing
|
||||
# linkModule: ( mId, userId ) =>
|
||||
# @log.info "DB | (IdxedMods) #{ @setname }.linkModule( #{ mId }, #{ userId } )"
|
||||
# @db.sadd "#{ @setname }:#{ mId }:users", userId,
|
||||
# replyHandler "sadd '#{ @setname }:#{ mId }:users' -> '#{ userId }'"
|
||||
# @db.sadd "user:#{ userId }:#{ @setname }s", mId,
|
||||
# replyHandler "sadd 'user:#{ userId }:#{ @setname }s' -> #{ mId }"
|
||||
|
||||
#TODO add testing
|
||||
unlinkModule: ( mId, userId ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.unlinkModule( #{ mId }, #{ userId } )"
|
||||
@db.srem "#{ @setname }:#{ mId }:users", userId,
|
||||
replyHandler "srem '#{ @setname }:#{ mId }:users' -> #{ userId }"
|
||||
@db.srem "user:#{ userId }:#{ @setname }s", mId,
|
||||
replyHandler "srem 'user:#{ userId }:#{ @setname }s' -> #{ mId }"
|
||||
# #TODO add testing
|
||||
# unlinkModule: ( mId, userId ) =>
|
||||
# @log.info "DB | (IdxedMods) #{ @setname }.unlinkModule( #{ mId }, #{ userId } )"
|
||||
# @db.srem "#{ @setname }:#{ mId }:users", userId,
|
||||
# replyHandler "srem '#{ @setname }:#{ mId }:users' -> #{ userId }"
|
||||
# @db.srem "user:#{ userId }:#{ @setname }s", mId,
|
||||
# replyHandler "srem 'user:#{ userId }:#{ @setname }s' -> #{ mId }"
|
||||
|
||||
#TODO add testing
|
||||
publish: ( mId ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.publish( #{ mId } )"
|
||||
@db.sadd "public-#{ @setname }s", mId,
|
||||
replyHandler "sadd 'public-#{ @setname }s' -> '#{ mId }'"
|
||||
# #TODO add testing
|
||||
# publish: ( mId ) =>
|
||||
# @log.info "DB | (IdxedMods) #{ @setname }.publish( #{ mId } )"
|
||||
# @db.sadd "public-#{ @setname }s", mId,
|
||||
# replyHandler "sadd 'public-#{ @setname }s' -> '#{ mId }'"
|
||||
|
||||
#TODO add testing
|
||||
unpublish: ( mId ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.unpublish( #{ mId } )"
|
||||
@db.srem "public-#{ @setname }s", mId,
|
||||
replyHandler "srem 'public-#{ @setname }s' -> '#{ mId }'"
|
||||
# #TODO add testing
|
||||
# unpublish: ( mId ) =>
|
||||
# @log.info "DB | (IdxedMods) #{ @setname }.unpublish( #{ mId } )"
|
||||
# @db.srem "public-#{ @setname }s", mId,
|
||||
# replyHandler "srem 'public-#{ @setname }s' -> '#{ mId }'"
|
||||
|
||||
getModule: ( mId, cb ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.getModule( #{ mId } )"
|
||||
@db.hgetall "#{ @setname }:#{ mId }", cb
|
||||
getModule: ( userId, mId, cb ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.getModule( #{ userId }, #{ mId } )"
|
||||
@db.hgetall "user:#{ userId }:#{ @setname }:#{ mId }", cb
|
||||
|
||||
getModuleField: ( mId, field, cb ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.getModuleField( #{ mId }, #{ field } )"
|
||||
@db.hget "#{ @setname }:#{ mId }", field, cb
|
||||
|
||||
#TODO add testing
|
||||
getModuleParams: ( mId, cb ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.getModuleParams( #{ mId } )"
|
||||
@db.hget "#{ @setname }:#{ mId }", "params", cb
|
||||
getModuleField: ( userId, mId, field, cb ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.getModuleField( #{ userId }, #{ mId }, #{ field } )"
|
||||
@db.hget "user:#{ userId }:#{ @setname }:#{ mId }", field, cb
|
||||
|
||||
#TODO add testing
|
||||
getAvailableModuleIds: ( userId, cb ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.getAvailableModuleIds( #{ userId } )"
|
||||
@db.sunion "public-#{ @setname }s", "user:#{ userId }:#{ @setname }s", cb
|
||||
|
||||
getModuleIds: ( cb ) =>
|
||||
getModuleIds: ( userId, cb ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.getModuleIds()"
|
||||
@db.smembers "#{ @setname }s", cb
|
||||
@db.smembers "user:#{ userId }:#{ @setname }s", cb
|
||||
|
||||
getModules: ( cb ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.getModules()"
|
||||
getSetRecords "#{ @setname }s", @getModule, cb
|
||||
# getModules: ( cb ) =>
|
||||
# @log.info "DB | (IdxedMods) #{ @setname }.getModules()"
|
||||
# getSetRecords "#{ @setname }s", @getModule, cb
|
||||
|
||||
deleteModule: ( mId ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.deleteModule( #{ mId } )"
|
||||
@db.srem "#{ @setname }s", mId,
|
||||
replyHandler "srem '#{ @setname }s' -> '#{ mId }'"
|
||||
@db.del "#{ @setname }:#{ mId }",
|
||||
replyHandler "del '#{ @setname }:#{ mId }'"
|
||||
@unpublish mId
|
||||
@db.smembers "#{ @setname }:#{ mId }:users", ( err, obj ) =>
|
||||
for userId in obj
|
||||
@unlinkModule mId, userId
|
||||
@deleteUserParams mId, userId
|
||||
exports.getUserLinkedRules userId, ( err, obj ) =>
|
||||
for rule in obj
|
||||
@getUserArgumentsFunctions userId, rule, mId, ( err, obj ) =>
|
||||
@deleteUserArguments userId, rule, mId
|
||||
deleteModule: ( userId, mId ) =>
|
||||
@log.info "DB | (IdxedMods) #{ @setname }.deleteModule( #{ userId }, #{ mId } )"
|
||||
@db.srem "user:#{ userId }:#{ @setname }s", mId,
|
||||
replyHandler "srem 'user:#{ userId }:#{ @setname }s' -> '#{ mId }'"
|
||||
@db.del "user:#{ userId }:#{ @setname }:#{ mId }",
|
||||
replyHandler "del 'user:#{ userId }:#{ @setname }:#{ mId }'"
|
||||
# @unpublish mId
|
||||
# @unlinkModule mId, userId
|
||||
@deleteUserParams mId, userId
|
||||
exports.getUserLinkedRules userId, ( err, obj ) =>
|
||||
for rule in obj
|
||||
@getUserArgumentsFunctions userId, rule, mId, ( err, obj ) =>
|
||||
@deleteUserArguments userId, rule, mId
|
||||
|
||||
###
|
||||
Stores user params for a module. They are expected to be RSA encrypted with helps of
|
||||
|
|
@ -694,6 +687,7 @@ exports.deleteUser = ( userId ) =>
|
|||
replyHandler "srem 'role:#{ roleId }:users' -> '#{ userId }'"
|
||||
delRoleUser id for id in obj
|
||||
@db.del "user:#{ userId }:roles", replyHandler "del 'user:#{ userId }:roles'"
|
||||
# TODO we also need to delete this user's modules
|
||||
|
||||
###
|
||||
Checks the credentials and on success returns the user object to the
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
"log": {
|
||||
"nolog": "false",
|
||||
"mode": "productive",
|
||||
"io-level": "fatal",
|
||||
"file-level": "warn",
|
||||
"io-level": "info",
|
||||
"file-level": "info",
|
||||
"file-path": "logs/server.log"
|
||||
},
|
||||
"webhooks": [
|
||||
|
|
|
|||
|
|
@ -173,39 +173,43 @@ Components Manager
|
|||
*/
|
||||
|
||||
getModules = function(user, oPayload, dbMod, callback) {
|
||||
return dbMod.getAvailableModuleIds(user.username, function(err, arrNames) {
|
||||
var answReq, fGetFunctions, id, oRes, sem, _i, _len, _results;
|
||||
oRes = {};
|
||||
answReq = function() {
|
||||
return callback({
|
||||
code: 200,
|
||||
message: JSON.stringify(oRes)
|
||||
});
|
||||
};
|
||||
sem = arrNames.length;
|
||||
if (sem === 0) {
|
||||
return answReq();
|
||||
} else {
|
||||
fGetFunctions = (function(_this) {
|
||||
return function(id) {
|
||||
return dbMod.getModule(id, function(err, oModule) {
|
||||
if (oModule) {
|
||||
oRes[id] = JSON.parse(oModule.functions);
|
||||
}
|
||||
if (--sem === 0) {
|
||||
return answReq();
|
||||
}
|
||||
});
|
||||
};
|
||||
})(this);
|
||||
_results = [];
|
||||
for (_i = 0, _len = arrNames.length; _i < _len; _i++) {
|
||||
id = arrNames[_i];
|
||||
_results.push(fGetFunctions(id));
|
||||
var fProcessIds;
|
||||
fProcessIds = function(userName) {
|
||||
return function(err, arrNames) {
|
||||
var answReq, fGetFunctions, id, oRes, sem, _i, _len, _results;
|
||||
oRes = {};
|
||||
answReq = function() {
|
||||
return callback({
|
||||
code: 200,
|
||||
message: JSON.stringify(oRes)
|
||||
});
|
||||
};
|
||||
sem = arrNames.length;
|
||||
if (sem === 0) {
|
||||
return answReq();
|
||||
} else {
|
||||
fGetFunctions = (function(_this) {
|
||||
return function(id) {
|
||||
return dbMod.getModule(userName, id, function(err, oModule) {
|
||||
if (oModule) {
|
||||
oRes[id] = JSON.parse(oModule.functions);
|
||||
}
|
||||
if (--sem === 0) {
|
||||
return answReq();
|
||||
}
|
||||
});
|
||||
};
|
||||
})(this);
|
||||
_results = [];
|
||||
for (_i = 0, _len = arrNames.length; _i < _len; _i++) {
|
||||
id = arrNames[_i];
|
||||
_results.push(fGetFunctions(id));
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
});
|
||||
};
|
||||
};
|
||||
return dbMod.getAvailableModuleIds(user.username, fProcessIds(user.username));
|
||||
};
|
||||
|
||||
getModuleParams = function(user, oPayload, dbMod, callback) {
|
||||
|
|
@ -214,7 +218,7 @@ Components Manager
|
|||
if (answ.code !== 200) {
|
||||
return callback(answ);
|
||||
} else {
|
||||
return dbMod.getModuleParams(oPayload.id, function(err, oPayload) {
|
||||
return dbMod.getModuleField(user.username, oPayload.id, "params", function(err, oPayload) {
|
||||
answ.message = oPayload;
|
||||
return callback(answ);
|
||||
});
|
||||
|
|
@ -265,7 +269,7 @@ Components Manager
|
|||
if (oPayload.overwrite) {
|
||||
return storeModule(user, oPayload, dbMod, callback);
|
||||
} else {
|
||||
return dbMod.getModule(oPayload.id, function(err, mod) {
|
||||
return dbMod.getModule(user.username, oPayload.id, function(err, mod) {
|
||||
if (mod) {
|
||||
answ.code = 409;
|
||||
answ.message = 'Module name already existing: ' + oPayload.id;
|
||||
|
|
@ -298,9 +302,6 @@ Components Manager
|
|||
oPayload.functions = JSON.stringify(funcs);
|
||||
oPayload.functionArgs = JSON.stringify(cm.funcParams);
|
||||
dbMod.storeModule(user.username, oPayload);
|
||||
if (oPayload["public"] === 'true') {
|
||||
dbMod.publish(oPayload.id);
|
||||
}
|
||||
}
|
||||
return callback(answ);
|
||||
});
|
||||
|
|
@ -367,7 +368,7 @@ Components Manager
|
|||
return getModules(user, oPayload, db.eventPollers, callback);
|
||||
},
|
||||
get_full_event_poller: function(user, oPayload, callback) {
|
||||
return db.eventPollers.getModule(oPayload.id, function(err, obj) {
|
||||
return db.eventPollers.getModule(user.username, oPayload.id, function(err, obj) {
|
||||
return callback({
|
||||
code: 200,
|
||||
message: JSON.stringify(obj)
|
||||
|
|
@ -389,7 +390,7 @@ Components Manager
|
|||
if (answ.code !== 200) {
|
||||
return callback(answ);
|
||||
} else {
|
||||
return db.eventPollers.getModuleField(oPayload.id, 'functionArgs', function(err, obj) {
|
||||
return db.eventPollers.getModuleField(user.username, oPayload.id, 'functionArgs', function(err, obj) {
|
||||
return callback({
|
||||
code: 200,
|
||||
message: obj
|
||||
|
|
@ -406,7 +407,7 @@ Components Manager
|
|||
if (answ.code !== 200) {
|
||||
return callback(answ);
|
||||
} else {
|
||||
db.eventPollers.deleteModule(oPayload.id);
|
||||
db.eventPollers.deleteModule(user.username, oPayload.id);
|
||||
return callback({
|
||||
code: 200,
|
||||
message: 'OK!'
|
||||
|
|
@ -422,7 +423,7 @@ Components Manager
|
|||
if (answ.code !== 200) {
|
||||
return callback(answ);
|
||||
} else {
|
||||
return db.actionInvokers.getModule(oPayload.id, function(err, obj) {
|
||||
return db.actionInvokers.getModule(user.username, oPayload.id, function(err, obj) {
|
||||
return callback({
|
||||
code: 200,
|
||||
message: JSON.stringify(obj)
|
||||
|
|
@ -445,7 +446,7 @@ Components Manager
|
|||
if (answ.code !== 200) {
|
||||
return callback(answ);
|
||||
} else {
|
||||
return db.actionInvokers.getModuleField(oPayload.id, 'functionArgs', function(err, obj) {
|
||||
return db.actionInvokers.getModuleField(user.username, oPayload.id, 'functionArgs', function(err, obj) {
|
||||
return callback({
|
||||
code: 200,
|
||||
message: obj
|
||||
|
|
@ -462,7 +463,7 @@ Components Manager
|
|||
if (answ.code !== 200) {
|
||||
return callback(answ);
|
||||
} else {
|
||||
db.actionInvokers.deleteModule(oPayload.id);
|
||||
db.actionInvokers.deleteModule(user.username, oPayload.id);
|
||||
return callback({
|
||||
code: 200,
|
||||
message: 'OK!'
|
||||
|
|
|
|||
|
|
@ -166,7 +166,7 @@ Engine
|
|||
var moduleName;
|
||||
moduleName = (actionName.split(' -> '))[0];
|
||||
if (!oMyRule.actions[moduleName] || oMyRule.rule.id === updatedRuleId) {
|
||||
return db.actionInvokers.getModule(moduleName, function(err, obj) {
|
||||
return db.actionInvokers.getModule(userName, moduleName, function(err, obj) {
|
||||
if (obj) {
|
||||
return dynmod.compileString(obj.data, userName, oMyRule.rule.id, moduleName, obj.lang, db.actionInvokers, function(result) {
|
||||
if (result.answ.code === 200) {
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ Dynamic Modules
|
|||
var arrName, fAnonymous;
|
||||
arrName = msg.rule.event.split(' -> ');
|
||||
fAnonymous = function() {
|
||||
return db.eventPollers.getModule(arrName[0], function(err, obj) {
|
||||
return db.eventPollers.getModule(msg.user, arrName[0], function(err, obj) {
|
||||
if (!obj) {
|
||||
return log.warn("EP | Strange... no module retrieved: " + arrName[0]);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -271,16 +271,10 @@ Persistence
|
|||
this.getUserParams = __bind(this.getUserParams, this);
|
||||
this.storeUserParams = __bind(this.storeUserParams, this);
|
||||
this.deleteModule = __bind(this.deleteModule, this);
|
||||
this.getModules = __bind(this.getModules, this);
|
||||
this.getModuleIds = __bind(this.getModuleIds, this);
|
||||
this.getAvailableModuleIds = __bind(this.getAvailableModuleIds, this);
|
||||
this.getModuleParams = __bind(this.getModuleParams, this);
|
||||
this.getModuleField = __bind(this.getModuleField, this);
|
||||
this.getModule = __bind(this.getModule, this);
|
||||
this.unpublish = __bind(this.unpublish, this);
|
||||
this.publish = __bind(this.publish, this);
|
||||
this.unlinkModule = __bind(this.unlinkModule, this);
|
||||
this.linkModule = __bind(this.linkModule, this);
|
||||
this.storeModule = __bind(this.storeModule, this);
|
||||
this.log.info("DB | (IdxedMods) Instantiated indexed modules for '" + this.setname + "'");
|
||||
}
|
||||
|
|
@ -301,46 +295,18 @@ Persistence
|
|||
|
||||
IndexedModules.prototype.storeModule = function(userId, oModule) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".storeModule( " + userId + ", oModule )");
|
||||
this.db.sadd("" + this.setname + "s", oModule.id, replyHandler("sadd '" + this.setname + "s' -> '" + oModule.id + "'"));
|
||||
this.db.hmset("" + this.setname + ":" + oModule.id, oModule, replyHandler("hmset '" + this.setname + ":" + oModule.id + "' -> [oModule]"));
|
||||
return this.linkModule(oModule.id, userId);
|
||||
this.db.sadd("user:" + userId + ":" + this.setname + "s", oModule.id, replyHandler("sadd 'user:" + userId + ":" + this.setname + "s' -> " + oModule.id));
|
||||
return this.db.hmset("user:" + userId + ":" + this.setname + ":" + oModule.id, oModule, replyHandler("hmset 'user:" + userId + ":" + this.setname + ":" + oModule.id + "' -> [oModule]"));
|
||||
};
|
||||
|
||||
IndexedModules.prototype.linkModule = function(mId, userId) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".linkModule( " + mId + ", " + userId + " )");
|
||||
this.db.sadd("" + this.setname + ":" + mId + ":users", userId, replyHandler("sadd '" + this.setname + ":" + mId + ":users' -> '" + userId + "'"));
|
||||
return this.db.sadd("user:" + userId + ":" + this.setname + "s", mId, replyHandler("sadd 'user:" + userId + ":" + this.setname + "s' -> " + mId));
|
||||
IndexedModules.prototype.getModule = function(userId, mId, cb) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".getModule( " + userId + ", " + mId + " )");
|
||||
return this.db.hgetall("user:" + userId + ":" + this.setname + ":" + mId, cb);
|
||||
};
|
||||
|
||||
IndexedModules.prototype.unlinkModule = function(mId, userId) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".unlinkModule( " + mId + ", " + userId + " )");
|
||||
this.db.srem("" + this.setname + ":" + mId + ":users", userId, replyHandler("srem '" + this.setname + ":" + mId + ":users' -> " + userId));
|
||||
return this.db.srem("user:" + userId + ":" + this.setname + "s", mId, replyHandler("srem 'user:" + userId + ":" + this.setname + "s' -> " + mId));
|
||||
};
|
||||
|
||||
IndexedModules.prototype.publish = function(mId) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".publish( " + mId + " )");
|
||||
return this.db.sadd("public-" + this.setname + "s", mId, replyHandler("sadd 'public-" + this.setname + "s' -> '" + mId + "'"));
|
||||
};
|
||||
|
||||
IndexedModules.prototype.unpublish = function(mId) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".unpublish( " + mId + " )");
|
||||
return this.db.srem("public-" + this.setname + "s", mId, replyHandler("srem 'public-" + this.setname + "s' -> '" + mId + "'"));
|
||||
};
|
||||
|
||||
IndexedModules.prototype.getModule = function(mId, cb) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".getModule( " + mId + " )");
|
||||
return this.db.hgetall("" + this.setname + ":" + mId, cb);
|
||||
};
|
||||
|
||||
IndexedModules.prototype.getModuleField = function(mId, field, cb) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".getModuleField( " + mId + ", " + field + " )");
|
||||
return this.db.hget("" + this.setname + ":" + mId, field, cb);
|
||||
};
|
||||
|
||||
IndexedModules.prototype.getModuleParams = function(mId, cb) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".getModuleParams( " + mId + " )");
|
||||
return this.db.hget("" + this.setname + ":" + mId, "params", cb);
|
||||
IndexedModules.prototype.getModuleField = function(userId, mId, field, cb) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".getModuleField( " + userId + ", " + mId + ", " + field + " )");
|
||||
return this.db.hget("user:" + userId + ":" + this.setname + ":" + mId, field, cb);
|
||||
};
|
||||
|
||||
IndexedModules.prototype.getAvailableModuleIds = function(userId, cb) {
|
||||
|
|
@ -348,39 +314,24 @@ Persistence
|
|||
return this.db.sunion("public-" + this.setname + "s", "user:" + userId + ":" + this.setname + "s", cb);
|
||||
};
|
||||
|
||||
IndexedModules.prototype.getModuleIds = function(cb) {
|
||||
IndexedModules.prototype.getModuleIds = function(userId, cb) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".getModuleIds()");
|
||||
return this.db.smembers("" + this.setname + "s", cb);
|
||||
return this.db.smembers("user:" + userId + ":" + this.setname + "s", cb);
|
||||
};
|
||||
|
||||
IndexedModules.prototype.getModules = function(cb) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".getModules()");
|
||||
return getSetRecords("" + this.setname + "s", this.getModule, cb);
|
||||
};
|
||||
|
||||
IndexedModules.prototype.deleteModule = function(mId) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".deleteModule( " + mId + " )");
|
||||
this.db.srem("" + this.setname + "s", mId, replyHandler("srem '" + this.setname + "s' -> '" + mId + "'"));
|
||||
this.db.del("" + this.setname + ":" + mId, replyHandler("del '" + this.setname + ":" + mId + "'"));
|
||||
this.unpublish(mId);
|
||||
return this.db.smembers("" + this.setname + ":" + mId + ":users", (function(_this) {
|
||||
IndexedModules.prototype.deleteModule = function(userId, mId) {
|
||||
this.log.info("DB | (IdxedMods) " + this.setname + ".deleteModule( " + userId + ", " + mId + " )");
|
||||
this.db.srem("user:" + userId + ":" + this.setname + "s", mId, replyHandler("srem 'user:" + userId + ":" + this.setname + "s' -> '" + mId + "'"));
|
||||
this.db.del("user:" + userId + ":" + this.setname + ":" + mId, replyHandler("del 'user:" + userId + ":" + this.setname + ":" + mId + "'"));
|
||||
this.deleteUserParams(mId, userId);
|
||||
return exports.getUserLinkedRules(userId, (function(_this) {
|
||||
return function(err, obj) {
|
||||
var userId, _i, _len, _results;
|
||||
var rule, _i, _len, _results;
|
||||
_results = [];
|
||||
for (_i = 0, _len = obj.length; _i < _len; _i++) {
|
||||
userId = obj[_i];
|
||||
_this.unlinkModule(mId, userId);
|
||||
_this.deleteUserParams(mId, userId);
|
||||
_results.push(exports.getUserLinkedRules(userId, function(err, obj) {
|
||||
var rule, _j, _len1, _results1;
|
||||
_results1 = [];
|
||||
for (_j = 0, _len1 = obj.length; _j < _len1; _j++) {
|
||||
rule = obj[_j];
|
||||
_results1.push(_this.getUserArgumentsFunctions(userId, rule, mId, function(err, obj) {
|
||||
return _this.deleteUserArguments(userId, rule, mId);
|
||||
}));
|
||||
}
|
||||
return _results1;
|
||||
rule = obj[_i];
|
||||
_results.push(_this.getUserArgumentsFunctions(userId, rule, mId, function(err, obj) {
|
||||
return _this.deleteUserArguments(userId, rule, mId);
|
||||
}));
|
||||
}
|
||||
return _results;
|
||||
|
|
|
|||
|
|
@ -59,11 +59,11 @@ exports.tearDown = ( cb ) ->
|
|||
db.deleteRule oRuleOne.id
|
||||
db.deleteRule oRuleTwo.id
|
||||
db.deleteRule oRuleThree.id
|
||||
db.eventPollers.deleteModule oEpOne.id
|
||||
db.eventPollers.deleteModule oEpTwo.id
|
||||
db.actionInvokers.deleteModule oAiOne.id
|
||||
db.actionInvokers.deleteModule oAiTwo.id
|
||||
db.actionInvokers.deleteModule oAiThree.id
|
||||
db.eventPollers.deleteModule oUser.username, oEpOne.id
|
||||
db.eventPollers.deleteModule oUser.username, oEpTwo.id
|
||||
db.actionInvokers.deleteModule oUser.username, oAiOne.id
|
||||
db.actionInvokers.deleteModule oUser.username, oAiTwo.id
|
||||
db.actionInvokers.deleteModule oUser.username, oAiThree.id
|
||||
db.actionInvokers.deleteUserParams oAiThree.id, oUser.username
|
||||
|
||||
setTimeout cb, 100
|
||||
|
|
@ -186,7 +186,7 @@ exports.moduleHandling =
|
|||
cm.processRequest oUser, request, ( answ ) =>
|
||||
test.strictEqual 200, answ.code, 'Forging Module did not return 200'
|
||||
|
||||
db.actionInvokers.getModule oAiTwo.id, ( err, obj ) ->
|
||||
db.actionInvokers.getModule oUser.username, oAiTwo.id, ( err, obj ) ->
|
||||
test.deepEqual obj, oAiTwo, 'Forged Module is not what we expected'
|
||||
test.done()
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ exports.setUp = ( cb ) ->
|
|||
|
||||
exports.tearDown = ( cb ) ->
|
||||
db.deleteRule oRule.id
|
||||
db.actionInvokers.deleteModule oAi.id
|
||||
db.actionInvokers.deleteModule oUser.username, oAi.id
|
||||
engine.shutDown()
|
||||
setTimeout cb, 200
|
||||
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@ exports.setUp = ( cb ) ->
|
|||
|
||||
exports.tearDown = ( cb ) ->
|
||||
db.deleteRule oRuleOne.id
|
||||
db.actionInvokers.deleteModule oAiOne.id
|
||||
db.actionInvokers.deleteModule oAiTwo.id
|
||||
db.actionInvokers.deleteModule oUser.username, oAiOne.id
|
||||
db.actionInvokers.deleteModule oUser.username, oAiTwo.id
|
||||
# TODO if user is deleted all his modules should be unlinked and deleted
|
||||
db.deleteUser oUser.username
|
||||
|
||||
|
|
|
|||
|
|
@ -146,34 +146,32 @@ exports.EventQueue =
|
|||
exports.EventPoller =
|
||||
|
||||
tearDown: ( cb ) ->
|
||||
# db.eventPollers.unlinkModule oEpOne.id, oUser.username
|
||||
db.eventPollers.deleteModule oEpOne.id
|
||||
# db.eventPollers.unlinkModule oEpTwo.id, oUser.username
|
||||
db.eventPollers.deleteModule oEpTwo.id
|
||||
db.eventPollers.deleteModule oUser.username, oEpOne.id
|
||||
db.eventPollers.deleteModule oUser.username, oEpTwo.id
|
||||
cb()
|
||||
|
||||
testCreateAndRead: ( test ) ->
|
||||
test.expect 3
|
||||
test.expect 2
|
||||
db.eventPollers.storeModule oUser.username, oEpOne
|
||||
|
||||
# test that the ID shows up in the set
|
||||
db.eventPollers.getModuleIds ( err , obj ) ->
|
||||
db.eventPollers.getModuleIds oUser.username, ( err , obj ) ->
|
||||
test.ok oEpOne.id in obj,
|
||||
'Expected key not in event-pollers set'
|
||||
|
||||
# the retrieved object really is the one we expected
|
||||
db.eventPollers.getModule oEpOne.id, ( err , obj ) ->
|
||||
db.eventPollers.getModule oUser.username, oEpOne.id, ( err , obj ) ->
|
||||
test.deepEqual obj, oEpOne,
|
||||
'Retrieved Event Poller is not what we expected'
|
||||
|
||||
# Ensure the event poller is in the list of all existing ones
|
||||
db.eventPollers.getModules ( err , obj ) ->
|
||||
test.deepEqual oEpOne, obj[oEpOne.id],
|
||||
'Event Poller ist not in result set'
|
||||
test.done()
|
||||
# # Ensure the event poller is in the list of all existing ones
|
||||
# db.eventPollers.getModules oUser.username, ( err , obj ) ->
|
||||
# test.deepEqual oEpOne, obj[oEpOne.id],
|
||||
# 'Event Poller ist not in result set'
|
||||
test.done()
|
||||
|
||||
testUpdate: ( test ) ->
|
||||
test.expect 2
|
||||
test.expect 1
|
||||
|
||||
oTmp = {}
|
||||
oTmp[key] = val for key, val of oEpOne
|
||||
|
|
@ -184,16 +182,16 @@ exports.EventPoller =
|
|||
db.eventPollers.storeModule oUser.username, oTmp
|
||||
|
||||
# the retrieved object really is the one we expected
|
||||
db.eventPollers.getModule oEpOne.id, ( err , obj ) ->
|
||||
db.eventPollers.getModule oUser.username, oEpOne.id, ( err , obj ) ->
|
||||
test.deepEqual obj, oTmp,
|
||||
'Retrieved Event Poller is not what we expected'
|
||||
|
||||
# Ensure the event poller is in the list of all existing ones
|
||||
db.eventPollers.getModules ( err , obj ) ->
|
||||
test.deepEqual oTmp, obj[oEpOne.id],
|
||||
'Event Poller ist not in result set'
|
||||
# # Ensure the event poller is in the list of all existing ones
|
||||
# db.eventPollers.getModules oUser.username, ( err , obj ) ->
|
||||
# test.deepEqual oTmp, obj[oEpOne.id],
|
||||
# 'Event Poller ist not in result set'
|
||||
|
||||
test.done()
|
||||
test.done()
|
||||
|
||||
testDelete: ( test ) ->
|
||||
test.expect 2
|
||||
|
|
@ -202,13 +200,13 @@ exports.EventPoller =
|
|||
db.eventPollers.storeModule oUser.username, oEpOne
|
||||
|
||||
# Ensure the event poller has been deleted
|
||||
db.eventPollers.deleteModule oEpOne.id
|
||||
db.eventPollers.getModule oEpOne.id, ( err , obj ) ->
|
||||
db.eventPollers.deleteModule oUser.username, oEpOne.id
|
||||
db.eventPollers.getModule oUser.username, oEpOne.id, ( err , obj ) ->
|
||||
test.strictEqual obj, null,
|
||||
'Event Poller still exists'
|
||||
|
||||
# Ensure the ID has been removed from the set
|
||||
db.eventPollers.getModuleIds ( err , obj ) ->
|
||||
db.eventPollers.getModuleIds oUser.username, ( err , obj ) ->
|
||||
test.ok oEpOne.id not in obj,
|
||||
'Event Poller key still exists in set'
|
||||
|
||||
|
|
@ -232,11 +230,11 @@ exports.EventPoller =
|
|||
|
||||
db.eventPollers.storeModule oUser.username, oEpOne
|
||||
db.eventPollers.storeModule oUser.username, oEpTwo
|
||||
db.eventPollers.getModuleIds ( err, obj ) ->
|
||||
db.eventPollers.getModuleIds oUser.username, ( err, obj ) ->
|
||||
test.ok oEpOne.id in obj and oEpTwo.id in obj,
|
||||
'Not all event poller Ids in set'
|
||||
db.eventPollers.getModule oEpOne.id, fCheckInvoker oEpOne.id, oEpOne
|
||||
db.eventPollers.getModule oEpTwo.id, fCheckInvoker oEpTwo.id, oEpTwo
|
||||
db.eventPollers.getModule oUser.username, oEpOne.id, fCheckInvoker oEpOne.id, oEpOne
|
||||
db.eventPollers.getModule oUser.username, oEpTwo.id, fCheckInvoker oEpTwo.id, oEpTwo
|
||||
|
||||
|
||||
###
|
||||
|
|
|
|||
Loading…
Reference in a new issue