-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcontroller.js
More file actions
78 lines (65 loc) · 1.84 KB
/
controller.js
File metadata and controls
78 lines (65 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// base controller
// return constructor.
"use strict";
var controllerClass = (function (){
var path = require("path"),
route = new router();
function _controller(name, ctrlLvlHandler){
var that = this;
that.name = name;
that.get = function(actionWithParams, callback, attr ,handler){
_setAction(actionWithParams, "GET", callback, attr, !!handler ? handler: ctrlLvlHandler);
};
that.post = function(actionWithParams, callback, attr, handler){
_setAction(actionWithParams, "POST", callback, attr, !!handler ? handler: ctrlLvlHandler);
};
var _setAction = function(actionWithParams, verb, callback, attr, handler){
var httpVerb = verb || "GET",
actionParams, actionname, isOptional = false;
try{
if(!!actionWithParams){
// splits actionname and params
actionParams = actionWithParams.split('/');
/*
controllername:{
actionname:{
//action:GET/POST
params: {id},
optional: true/false
callback: callback(id)
}
}
*/
if(actionParams.length === 2){
//console.log(actionParams);
var paramRegex = new RegExp("^[\{][a-z]*[\}]$");
if(paramRegex.test(actionParams[1])){
isOptional = true;
}
}
// form data object
var routeObj = {
controllerName: name,
actionData: {
actionname: actionParams[0],
//paramLiteral: actionParams[1].substr(1, actionParams[1].length-2),
optional: isOptional,
callback: callback,
httpVerb: httpVerb,
attr: attr || {auth: false},
handler: handler
}
}
console.log(routeObj);
// call routeSetter function.
route.routeSetter(routeObj);
}
}
catch(ex){
throw new Error(ex.message || "Route setting wrong!!!");
}
};
};
return _controller;
})();
module.exports = controllerClass;