bouquins/lib/endpoint/endpoint.js

57 lines
1.3 KiB
JavaScript
Raw Normal View History

/**
* Endpoint class.
*/
var Action = require('../action/action.js');
2014-01-20 19:30:45 +00:00
function Endpoint() {
// constructor
};
Endpoint.prototype = {
/**
* Build an action on resource endpoint.
* @param method <string> HTTP method
* @param url <url> target URL
* @param callback <function(err, action)> callback
*/
buildAction : function(method, url, callback) {
var col = this.targetCollection(url.pathname);
2014-01-22 18:38:47 +00:00
logger.debug('Building action ('+method+','+col+')');
var action;
if (col && method == 'POST') {
//TODO search
} else if (col && method == 'GET') {
2014-01-22 18:38:47 +00:00
action = new Action.ListAction();
2014-01-22 19:39:31 +00:00
action.page = url.query.page;
action.perPage = url.query.per_page;
} else if (!col && method == 'POST') {
//TODO edit
} else if (!col && method == 'GET') {
action = new Action.ShowAction();
}
if (action) {
this.bind(action, url.query, function(err) {
callback(err, action);
});
} else {
callback(new Error('no action'));
}
},
2014-01-21 19:25:07 +00:00
/**
* @return target is a collection of resources.
*/
targetCollection : function(pathname) {
// TODO
return false;
},
/**
* Bind action to endpoint resource.
*/
bind : function(action, params, callback) {
2014-01-21 19:25:07 +00:00
// implemented
callback(null, action);
}
};
exports = module.exports = Endpoint;