cloudcmd/lib/client/rest.js
2014-03-25 04:05:13 -04:00

153 lines
4.6 KiB
JavaScript

var Util, DOM, CloudFunc, CloudCmd;
(function(Util, DOM, CloudFunc) {
'use strict';
var RESTful = Util.extendProto(RESTfulProto),
DOMProto = Object.getPrototypeOf(DOM);
Util.extend(DOMProto, {
RESTful: RESTful
});
function RESTfulProto() {
var Images = DOM.Images;
this.delete = function(url, data, callback) {
if (!callback && Util.isFunction(data))
callback = data;
sendRequest({
method : 'DELETE',
url : CloudFunc.FS + url,
data : data,
callback : callback,
imgPosition : { top: !!data }
});
};
this.write = function(url, data, callback) {
sendRequest({
method : 'PUT',
url : CloudFunc.FS + url,
data : data,
callback : callback,
imgPosition : { top: true }
});
};
this.read = function(url, callback) {
sendRequest({
method : 'GET',
url : CloudFunc.FS + url,
callback : callback
});
};
this.cp = function(data, callback) {
sendRequest({
method : 'PUT',
url : '/cp',
data : data,
callback : callback
});
};
this.zip = function(data, callback) {
sendRequest({
method : 'PUT',
url : '/zip',
data : data,
callback : callback
});
};
this.unzip = function(data, callback) {
sendRequest({
method : 'PUT',
url : '/unzip',
data : data,
callback : callback
});
};
this.mv = function(data, callback) {
sendRequest({
method : 'PUT',
url : '/mv',
data : data,
callback : callback
});
};
this.config = function(data, callback) {
sendRequest({
method : 'PUT',
url : '/config',
data : data,
callback : callback,
imgPosition : { top: true }
});
};
this.Markdown = {
read : function(url, callback) {
sendRequest({
method : 'GET',
url : '/markdown' + url,
callback : callback,
imgPosition : { top: true },
doNotLog : true
});
},
render : function(data, callback) {
sendRequest({
method : 'PUT',
url : '/markdown',
data : data,
callback : callback,
imgPosition : { top: true },
doNotLog : true
});
}
};
function sendRequest(params) {
var p = params;
Images.showLoad(p.imgPosition);
CloudCmd.getConfig(function(config) {
var data,
isString = Util.isString(p.data),
isArrayBuffer = Util.isArrayBuffer(p.data);
if (Util.isString(p.url))
p.url = decodeURI(p.url);
if (p.data && !isString && !isArrayBuffer)
data = Util.stringifyJSON(p.data);
else
data = p.data;
p.url = config && config.apiURL + p.url;
DOM.ajax({
method : p.method,
url : p.url,
data : data,
error : Images.showError,
success : function(data) {
Images.hideLoad();
if (!p.doNotLog)
Util.log(data);
Util.exec(p.callback, data);
}
});
});
}
}
})(Util, DOM, CloudFunc);