mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
182 lines
4.6 KiB
JavaScript
182 lines
4.6 KiB
JavaScript
/* RESTfull module */
|
|
|
|
(function(){
|
|
"use strict";
|
|
|
|
var main = global.cloudcmd.main,
|
|
Util = main.util,
|
|
APIURL = '/api/v1',
|
|
OK = 200,
|
|
Header = main.generateHeaders('api.json', false);
|
|
|
|
/**
|
|
* rest interface
|
|
* @pConnectionData {request, responce}
|
|
*/
|
|
exports.api = function(pConnectionData){
|
|
var lRet = false,
|
|
lReq = pConnectionData.request,
|
|
lRes = pConnectionData.response,
|
|
lUrl = lReq.url,
|
|
lMethod = lReq.method;
|
|
|
|
if( Util.isContainStr(lUrl, APIURL) ){
|
|
lRet = true;
|
|
|
|
getBody(lReq, function(pBody){
|
|
var lCommand = Util.removeStr(lUrl, APIURL),
|
|
lData = getData({
|
|
command : lCommand,
|
|
method : lMethod,
|
|
body : pBody,
|
|
request : lReq,
|
|
response : lRes
|
|
});
|
|
|
|
if(lData)
|
|
send({
|
|
response : lRes,
|
|
data : lData
|
|
});
|
|
});
|
|
}
|
|
|
|
return lRet;
|
|
};
|
|
|
|
|
|
/**
|
|
* send data
|
|
*
|
|
* @param pRes
|
|
* @param pData
|
|
*/
|
|
function send(pParams){
|
|
var lRes = pParams.response,
|
|
lData = pParams.data;
|
|
|
|
lRes.writeHead(OK, Header);
|
|
lRes.end( JSON.stringify(lData) );
|
|
}
|
|
|
|
/**
|
|
* getting data on method and command
|
|
*
|
|
* @param pParams {command, method, body, requrest, response}
|
|
*/
|
|
function getData(pParams){
|
|
var lResult,
|
|
lCmd = pParams.command,
|
|
lMethod = pParams.method;
|
|
|
|
if(lCmd[0] === '/'){
|
|
lCmd = Util.removeStr(lCmd, '/');
|
|
pParams.command = lCmd;
|
|
}
|
|
|
|
switch(lMethod){
|
|
case 'GET':
|
|
lResult = onGET(pParams);
|
|
break;
|
|
|
|
case 'PUT':
|
|
lResult = onPUT(pParams);
|
|
break;
|
|
}
|
|
|
|
return lResult;
|
|
}
|
|
|
|
/**
|
|
* process data on GET request
|
|
*
|
|
* @param pParams {command, method, body, requrest, response}
|
|
*/
|
|
function onGET(pParams){
|
|
var lResult = {error: 'command not found'},
|
|
lCmd = pParams.command;
|
|
|
|
switch(lCmd){
|
|
case '':
|
|
lResult = {info: 'Cloud Commander API v1'};
|
|
break;
|
|
|
|
case 'github_id':
|
|
var lEnv = process.env,
|
|
lConfig = main.config;
|
|
|
|
lResult = lEnv.github_id || lConfig.github_id;
|
|
break;
|
|
|
|
case 'kill':
|
|
pParams.data = {
|
|
mesage: 'Cloud Commander was killed'
|
|
};
|
|
send(pParams);
|
|
|
|
lResult = null;
|
|
break;
|
|
}
|
|
|
|
return lResult;
|
|
}
|
|
|
|
/**
|
|
* process data on PUT request
|
|
*
|
|
* @param pParams {command, method, body, requrest, response}
|
|
*/
|
|
function onPUT(pParams){
|
|
var lResult = {error: 'command not found'},
|
|
lCmd = pParams.command,
|
|
lBody = pParams.body,
|
|
lRes = pParams.response;
|
|
|
|
switch(lCmd){
|
|
case 'auth':
|
|
main.auth(lBody, function(pTocken){
|
|
send({
|
|
response: lRes,
|
|
data: pTocken
|
|
});
|
|
});
|
|
|
|
lResult = false;
|
|
break;
|
|
|
|
case 'read':
|
|
console.log(lBody);
|
|
var lFiles = lBody;
|
|
|
|
if( Util.isString(lFiles) ){
|
|
pParams.name = lFiles;
|
|
main.sendFile(pParams);
|
|
|
|
lResult = null;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
|
|
return lResult;
|
|
}
|
|
|
|
/**
|
|
* get body of url query
|
|
*
|
|
* @param pReq
|
|
* @param pCallBack
|
|
*/
|
|
function getBody(pReq, pCallBack){
|
|
var lBody = '';
|
|
pReq.on('data', function(chunk) {
|
|
lBody += chunk.toString();
|
|
});
|
|
|
|
pReq.on('end', function() {
|
|
Util.exec(pCallBack, lBody);
|
|
});
|
|
}
|
|
|
|
})();
|