feature(fs) fs -> restafary

This commit is contained in:
coderaiser 2014-12-08 09:35:30 -05:00
parent bcffb91cd0
commit 01e887ec65
9 changed files with 8 additions and 384 deletions

View file

@ -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
}

View file

@ -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,

View file

@ -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);
});
};
})();

View file

@ -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
*

View file

@ -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);
});
}
})();

View file

@ -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;
}
};
})();

View file

@ -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);
});
});
};
})();

View file

@ -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);
}
})();

View file

@ -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": {