diff --git a/lib/server/rest.js b/lib/server/rest.js index c74a3cfb..5937181a 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -29,10 +29,31 @@ ponse = require('ponse'), rendy = require('rendy'), copymitter = require('copymitter'), + tryCatch = require('try-catch'), Modules = require(DIR_JSON + 'modules'), - isWin32 = process.platform === 'win32'; + isWin32 = process.platform === 'win32', + + json = { + parse: function(str) { + return this._try(str, JSON.parse); + }, + + stringify: function(json) { + return this._try(json, JSON.stringify); + }, + + _try: function(data, fn) { + var ret; + + tryCatch(function() { + ret = fn.call(JSON, data); + }); + + return ret; + } + }; /** * rest interface @@ -129,7 +150,7 @@ switch(cmd) { case '': - p.data = Util.json.stringify({ + p.data = json.stringify({ info: 'Cloud Commander API v1' }); @@ -172,12 +193,12 @@ if (name[0] === '/') cmd = name.replace('/', ''); - files = Util.json.parse(body); + files = json.parse(body); switch(cmd) { case 'auth': auth(body, function(error, token) { - callback(error, Util.json.stringify({ + callback(error, json.stringify({ data: token })); }); @@ -364,7 +385,7 @@ isObj = Util.type.object(dataParam); if (isObj) - data = Util.json.stringify(dataParam); + data = json.stringify(dataParam); else data = dataParam; diff --git a/package.json b/package.json index 0f1c9f20..4987d9ae 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "rendy": "~1.0.2", "restafary": "~1.1.0", "socket.io": "~1.3.3", + "try-catch": "~1.0.0", "tryrequire": "~1.1.5" }, "devDependencies": {