mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
feature(fs) fs -> restafary
This commit is contained in:
parent
bcffb91cd0
commit
01e887ec65
9 changed files with 8 additions and 384 deletions
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"indent_size": 4,
|
||||
"indent_char": " ",
|
||||
"indent_level": 0,
|
||||
"indent_with_tabs": false,
|
||||
"preserve_newlines": true,
|
||||
"max_preserve_newlines": 10,
|
||||
"jslint_happy": false,
|
||||
"space_after_anon_function": false,
|
||||
"brace_style": "collapse",
|
||||
"keep_array_indentation": false,
|
||||
"keep_function_indentation": false,
|
||||
"space_before_conditional": true,
|
||||
"break_chained_methods": false,
|
||||
"eval_code": false,
|
||||
"unescape_strings": false,
|
||||
"wrap_line_length": 0
|
||||
}
|
||||
|
|
@ -6,6 +6,7 @@
|
|||
DIR_SERVER = DIR + 'server/',
|
||||
|
||||
Util = require(DIR + 'util'),
|
||||
cloudfunc = require(DIR + 'cloudfunc'),
|
||||
|
||||
auth = require(DIR_SERVER + 'auth'),
|
||||
config = require(DIR_SERVER + 'config'),
|
||||
|
|
@ -16,6 +17,7 @@
|
|||
join = require('join-io'),
|
||||
ponse = require('ponse'),
|
||||
mollify = require('mollify'),
|
||||
restafary = require('restafary'),
|
||||
|
||||
WIN = process.platform === 'WIN32',
|
||||
terminal = !WIN ? require(DIR_SERVER + 'terminal') : function() {},
|
||||
|
|
@ -81,6 +83,9 @@
|
|||
funcs = [
|
||||
authFunc,
|
||||
config(),
|
||||
restafary({
|
||||
prefix: cloudfunc.apiURL + '/fs'
|
||||
}),
|
||||
rest,
|
||||
route,
|
||||
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
(function() {
|
||||
'use strict';
|
||||
|
||||
var fs = require('fs'),
|
||||
path = require('path'),
|
||||
|
||||
Util = require('../util'),
|
||||
tryRequire = require('./tryRequire'),
|
||||
beautify = tryRequire('js-beautify'),
|
||||
|
||||
DIR = '../../',
|
||||
HOME_WIN = process.env.HOMEPATH,
|
||||
HOME_UNIX = process.env.HOME,
|
||||
HOME = (HOME_UNIX || HOME_WIN) + path.sep,
|
||||
|
||||
EXT = ['js', 'css', 'html'],
|
||||
ERROR_MSG = 'File type "{{ ext }}" not supported.',
|
||||
ERROR_MSG_INST = 'Beautify not installed',
|
||||
ConfigPath = DIR + 'json/beautify.json',
|
||||
ConfigHome = HOME + '.beautify.json',
|
||||
|
||||
config =
|
||||
tryRequire(ConfigHome) ||
|
||||
tryRequire(ConfigPath, {log: true}) || {};
|
||||
|
||||
module.exports = function(name, callback) {
|
||||
var ext = path
|
||||
.extname(name)
|
||||
.slice(1),
|
||||
|
||||
is = ~EXT.indexOf(ext);
|
||||
|
||||
if (!beautify)
|
||||
callback(Error(ERROR_MSG_INST));
|
||||
else if (!is)
|
||||
callback(Error(Util.render(ERROR_MSG, {
|
||||
ext : ext
|
||||
})));
|
||||
else
|
||||
fs.readFile(name, 'utf8', function(error, data) {
|
||||
var result;
|
||||
|
||||
if (!error)
|
||||
error = Util.exec.try(function() {
|
||||
result = beautify[ext](data, config);
|
||||
});
|
||||
|
||||
|
||||
callback(error, result);
|
||||
});
|
||||
};
|
||||
|
||||
})();
|
||||
|
|
@ -13,12 +13,10 @@
|
|||
DIR_LIB = DIR + '../',
|
||||
DIR_JSON = DIR_LIB + '../json/',
|
||||
|
||||
fs = require('fs'),
|
||||
path = require('path'),
|
||||
|
||||
Util = require(DIR_LIB + 'util'),
|
||||
CloudFunc = require(DIR_LIB + 'cloudfunc'),
|
||||
format = require(DIR_LIB + 'format'),
|
||||
|
||||
markdown = require(DIR + 'rest/markdown'),
|
||||
|
||||
|
|
@ -32,18 +30,7 @@
|
|||
|
||||
Modules = require(DIR_JSON + 'modules'),
|
||||
|
||||
isWin32 = process.platform === 'win32',
|
||||
|
||||
Fs = {};
|
||||
|
||||
[
|
||||
'get',
|
||||
'put',
|
||||
'patch',
|
||||
'delete'
|
||||
].forEach(function(name) {
|
||||
Fs[name] = require(DIR + 'rest/fs/' + name);
|
||||
});
|
||||
isWin32 = process.platform === 'win32';
|
||||
|
||||
/**
|
||||
* rest interface
|
||||
|
|
@ -103,12 +90,9 @@
|
|||
*/
|
||||
function sendData(params, callback) {
|
||||
var p = params,
|
||||
isFS = RegExp('^/fs').test(p.name),
|
||||
isMD = RegExp('^/markdown').test(p.name);
|
||||
|
||||
if (isFS)
|
||||
onFS(params, callback);
|
||||
else if (isMD)
|
||||
if (isMD)
|
||||
markdown(p.name, p.request, function(error, data) {
|
||||
callback(error, data);
|
||||
});
|
||||
|
|
@ -129,101 +113,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
function onFS(params, callback) {
|
||||
var path,
|
||||
p = params,
|
||||
query = ponse.getQuery(p.request),
|
||||
optionsDefauls = {
|
||||
gzip: false,
|
||||
name:'.txt'
|
||||
};
|
||||
|
||||
p.name = Util.rmStrOnce(p.name, CloudFunc.FS) || '/';
|
||||
path = mellow.convertPath(p.name);
|
||||
|
||||
switch (p.request.method) {
|
||||
case 'PUT':
|
||||
Fs.put(query, path, p.request, function(error, data) {
|
||||
callback(error, optionsDefauls, data);
|
||||
});
|
||||
break;
|
||||
|
||||
case 'PATCH':
|
||||
Fs.patch(path, p.request, function(error, data) {
|
||||
callback(error, optionsDefauls, data);
|
||||
});
|
||||
break;
|
||||
|
||||
case 'GET':
|
||||
Fs.get(query, path, function(error, data) {
|
||||
var str,
|
||||
options = {},
|
||||
isFile = error && error.code === 'ENOTDIR',
|
||||
isStr = Util.type.string(data),
|
||||
params = {
|
||||
gzip: true,
|
||||
name: path,
|
||||
request: p.request,
|
||||
response: p.response,
|
||||
};
|
||||
|
||||
if (isFile) {
|
||||
fs.realpath(path, function(error, path) {
|
||||
if (!error)
|
||||
params.name = path;
|
||||
|
||||
params.gzip = false;
|
||||
ponse.sendFile(params);
|
||||
});
|
||||
} else {
|
||||
if (!error) {
|
||||
data.path = format.addSlashToEnd(p.name);
|
||||
|
||||
options = {
|
||||
name : p.name + '.json',
|
||||
query : query
|
||||
};
|
||||
|
||||
if (isStr)
|
||||
str = data;
|
||||
else
|
||||
str = Util.json.stringify(data);
|
||||
}
|
||||
|
||||
callback(error, options, str);
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case 'DELETE':
|
||||
pipe.getBody(p.request, function(error, body) {
|
||||
var files;
|
||||
|
||||
if (error) {
|
||||
callback(error);
|
||||
} else {
|
||||
files = Util.json.parse(body);
|
||||
|
||||
Fs.delete(query, path, files, function(error) {
|
||||
var names, msg;
|
||||
|
||||
if (!error) {
|
||||
if (files && files.length)
|
||||
names = files;
|
||||
else
|
||||
names = p.name;
|
||||
|
||||
msg = formatMsg('delete', names);
|
||||
}
|
||||
|
||||
callback(error, optionsDefauls, msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* process data on GET request
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
(function() {
|
||||
'use strict';
|
||||
|
||||
var DIR = '../../../',
|
||||
DIR_SERVER = DIR + 'server/',
|
||||
|
||||
Util = require(DIR + 'util'),
|
||||
tryRequire = require(DIR_SERVER + 'tryRequire'),
|
||||
flop = tryRequire('flop', {log: true, exit: true});
|
||||
|
||||
module.exports = function(query, name, files, callback) {
|
||||
var func = Util.exec.ret(callback),
|
||||
fileNames = Util.slice(files);
|
||||
|
||||
switch(query) {
|
||||
default:
|
||||
flop.delete(name, func);
|
||||
break;
|
||||
|
||||
case 'files':
|
||||
deleteFiles(name, fileNames, func);
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
function deleteFiles(from, names, callback) {
|
||||
var name,
|
||||
isLast = true;
|
||||
|
||||
isLast = !names.length;
|
||||
name = names.shift();
|
||||
|
||||
if (isLast)
|
||||
callback(null);
|
||||
else
|
||||
flop.delete(from + name, function(error) {
|
||||
if (error)
|
||||
callback(error);
|
||||
else
|
||||
deleteFiles(from, names, callback);
|
||||
});
|
||||
}
|
||||
|
||||
})();
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
(function() {
|
||||
'use strict';
|
||||
|
||||
var path = require('path'),
|
||||
DIR = path.resolve(__dirname + '/../../../') + '/',
|
||||
DIR_SERVER = DIR + 'server/',
|
||||
|
||||
Util = require(DIR + 'util'),
|
||||
|
||||
hash = require(DIR_SERVER + 'hash'),
|
||||
beautify = require(DIR_SERVER + 'beautify'),
|
||||
minify = require('minify'),
|
||||
|
||||
tryRequire = require(DIR_SERVER + 'tryRequire'),
|
||||
tryOptions = {log: true, exit: true},
|
||||
|
||||
mellow = tryRequire('mellow', tryOptions),
|
||||
flop = tryRequire('flop', tryOptions),
|
||||
files = tryRequire('files-io', tryOptions);
|
||||
|
||||
module.exports = function(query, name, callback) {
|
||||
var hashStream, error;
|
||||
|
||||
Util.check(arguments, ['query', 'name', 'callback']);
|
||||
|
||||
switch (query) {
|
||||
default:
|
||||
mellow.read(name, callback);
|
||||
break;
|
||||
|
||||
case 'size':
|
||||
flop.read(name, 'size', callback);
|
||||
break;
|
||||
|
||||
case 'time':
|
||||
flop.read(name, 'time', callback);
|
||||
break;
|
||||
|
||||
case 'beautify':
|
||||
beautify(name, callback);
|
||||
break;
|
||||
|
||||
case 'minify':
|
||||
minify(name, callback);
|
||||
break;
|
||||
|
||||
case 'hash':
|
||||
hashStream = hash();
|
||||
|
||||
if (!hashStream) {
|
||||
error = 'hash: not suported, try update node';
|
||||
callback(Error(error));
|
||||
} else
|
||||
files.pipe(name, hashStream, function (error) {
|
||||
var hex;
|
||||
|
||||
if (!error)
|
||||
hex = hashStream.get();
|
||||
|
||||
callback(error, hex);
|
||||
});
|
||||
|
||||
break;
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
(function() {
|
||||
'use strict';
|
||||
|
||||
var DIR = '../../../',
|
||||
DIR_SERVER = DIR + 'server/',
|
||||
|
||||
path = require('path'),
|
||||
|
||||
CloudFunc = require(DIR + 'cloudfunc'),
|
||||
Util = require(DIR + 'util'),
|
||||
|
||||
patch = require(DIR_SERVER + 'patch'),
|
||||
tryRequire = require(DIR_SERVER + 'tryRequire'),
|
||||
|
||||
pipe = tryRequire('pipe-io', {log: true, exit: true});
|
||||
|
||||
module.exports = function(name, readStream, callback) {
|
||||
var baseName = path.basename(name);
|
||||
|
||||
Util.check(arguments, ['name', 'readStream', 'callback']);
|
||||
|
||||
pipe.getBody(readStream, function(error, data) {
|
||||
var options = {
|
||||
size: CloudFunc.MAX_FILE_SIZE
|
||||
};
|
||||
|
||||
patch(name, data, options, function(error) {
|
||||
var msg;
|
||||
|
||||
if (!error)
|
||||
msg = CloudFunc.formatMsg('patch', baseName);
|
||||
|
||||
callback(error, msg);
|
||||
});
|
||||
});
|
||||
};
|
||||
})();
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
(function() {
|
||||
'use strict';
|
||||
|
||||
var DIR = '../../../',
|
||||
DIR_SERVER = DIR + 'server/',
|
||||
|
||||
path = require('path'),
|
||||
|
||||
CloudFunc = require(DIR + 'cloudfunc'),
|
||||
check = require('checkup'),
|
||||
exec = require('execon'),
|
||||
|
||||
packer = require('jag'),
|
||||
|
||||
tryRequire = require(DIR_SERVER + 'tryRequire'),
|
||||
tryOptions = {log: true, exit: true},
|
||||
|
||||
flop = tryRequire('flop', tryOptions),
|
||||
files = tryRequire('files-io', tryOptions),
|
||||
|
||||
onSave = exec.with(onDone, 'save'),
|
||||
onMakeDir = exec.with(onDone, 'make dir');
|
||||
|
||||
module.exports = function(query, name, readStream, callback) {
|
||||
var onFile = exec.with(onSave, name, callback),
|
||||
onDir = exec.with(onMakeDir, name, callback);
|
||||
|
||||
check(arguments, ['query', 'name', 'readStream', 'callback']);
|
||||
|
||||
switch(query) {
|
||||
default:
|
||||
files.pipe(readStream, name, onFile);
|
||||
break;
|
||||
|
||||
case 'dir':
|
||||
flop.create(name, 'dir', onDir);
|
||||
break;
|
||||
|
||||
case 'unzip':
|
||||
packer.unpack(readStream, name, onFile);
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
function onDone(msg, name, callback, error) {
|
||||
var baseName = path.basename(name);
|
||||
|
||||
if (!error)
|
||||
msg = CloudFunc.formatMsg(msg, baseName);
|
||||
|
||||
callback(error, msg);
|
||||
}
|
||||
})();
|
||||
|
|
@ -43,6 +43,7 @@
|
|||
"mollify": "~1.0.0",
|
||||
"pipe-io": "~1.1.1",
|
||||
"ponse": "~1.3.0",
|
||||
"restafary": "~1.0.0",
|
||||
"socket.io": "~1.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue