diff --git a/ChangeLog b/ChangeLog index 335b450a..28b942fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -174,6 +174,8 @@ for now it's much simplier. * Totaly refactored and leave in commander.js just generation of json of directory listing. +* Added ability to upload files. + 2012.12.12, Version 0.1.8 diff --git a/lib/cloudfunc.js b/lib/cloudfunc.js index 137cfbba..c5f2e091 100644 --- a/lib/cloudfunc.js +++ b/lib/cloudfunc.js @@ -1,7 +1,7 @@ var CloudFunc, exports; (function(){ - "use strict"; + 'use strict'; /** * Модуль, содержащий функции, которые diff --git a/lib/server/rest.js b/lib/server/rest.js index 01185bdf..c5e8ee8b 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -37,17 +37,12 @@ if( Util.isContainStr(lUrl, lAPIURL) ){ lRet = true; - - getBody(lReq, function(pBody){ - var lCommand = Util.removeStr(lUrl, lAPIURL); - getData({ - command : lCommand, - method : lMethod, - body : pBody, - request : lReq, - response : lRes - }); - + var lCommand = Util.removeStr(lUrl, lAPIURL); + getData({ + command : lCommand, + method : lMethod, + request : lReq, + response : lRes }); } @@ -137,18 +132,32 @@ break; case 'PUT': - var lCmd = 'mkdir ' + p.Name; - main.child_process.exec(lCmd, function(pError, pStdout, pStderr){ - var lError = pError || pStderr; - if(!lError){ - pParams.data = pStdout; - main.sendResponse(pParams); - } - else - main.sendError(pParams, lError); - }); + console.log(p.request.url); + var lQuery = main.getQuery(p.request); + p.name = Util.removeStr(p.name, '?dir'); - lRet = true; + if(lQuery === 'dir') + fs.mkdir(p.name, function(pError){ + if(!pError) + main.sendResponse(pParams, 'Folder ' + p.name + ' created.'); + else + main.sendError(pParams, pError); + }); + else{ + var lWriteStream = fs.createWriteStream(p.name); + + lWriteStream.on('error', function(pError){ + console.log(pError); + main.sendError(pParams, pError); + }); + + p.request.on('end', function(){ + main.sendResponse(pParams, 'file ' + p.name + ' created'); + }); + + //p.request.pipe(process.stdout); + p.request.pipe(lWriteStream); + } break; } } @@ -195,18 +204,19 @@ var lResult = {error: 'command not found'}, lCmd = pParams.command, lBody = pParams.body, - lRes = pParams.response; + lRes = pParams.response, + lReq = pParams.request; switch(lCmd){ case 'auth': - main.auth(lBody, function(pTocken){ - send({ - response: lRes, - data: pTocken + getBody(lReq, function(pBody){ + main.auth(pBody, function(pTocken){ + send({ + response: lRes, + data: pTocken + }); }); }); - - lResult = false; break; case 'read': @@ -217,9 +227,19 @@ pParams.name = lFiles; main.sendFile(pParams); - lResult = null; } + break; + case 'cmd': + main.child_process.exec(lCmd, function(pError, pStdout, pStderr){ + var lError = pError || pStderr; + if(!lError){ + pParams.data = pStdout; + main.sendResponse(pParams); + } + else + main.sendError(pParams, lError); + }); break; }