cloudcmd/lib/client/storage/_dropbox.js
2013-01-28 08:27:54 -05:00

111 lines
3.3 KiB
JavaScript

var CloudCommander, Util, DOM, Dropbox, cb, Client;
/* module for work with github */
(function(CloudCmd, Util, DOM){
'use strict';
var DropBoxStore = {};
/* temporary callback function for work with github */
cb = function (err, data){ Util.log(err || data);};
/* PRIVATE FUNCTIONS */
/**
* function loads dropbox.js
*/
function load(pCallBack){
console.time('dropbox load');
var lSrc = 'http://cdnjs.cloudflare.com/ajax/libs/dropbox.js/0.8.1/dropbox.min.js',
lLocal = CloudCmd.LIBDIRCLIENT + 'storage/dropbox/lib/dropbox.min.js',
lOnload = function(){
console.timeEnd('dropbox load');
DOM.Images.hideLoad();
Util.exec(pCallBack);
};
DOM.jsload(lSrc, {
onload : lOnload,
error : DOM.retJSLoad(lLocal, lOnload)
});
}
function getUserData(pCallBack){
Client.getUserInfo(function(pError, pData){
var lHello = 'Hello ' + pData.name + ' :)!',
lMsg = pError ? pError : lHello;
Util.log(lMsg);
});
Util.exec(pCallBack);
}
/**
* function logins on dropbox
*
* @param pData = {key, secret}
*/
DropBoxStore.login = function(pCallBack){
CloudCmd.getModules(function(pModules){
var lStorage = Util.findObjByNameInArr(pModules, 'storage'),
lDropBox = Util.findObjByNameInArr(lStorage.data, 'DropBox'),
lDropBoxKey = lDropBox && lDropBox.data.encodedKey;
Client = new Dropbox.Client({
key: lDropBoxKey
});
//Client.authDriver(new Dropbox.Drivers.Redirect({rememberUser: true}));
var lURL = CloudCmd.HOST + '/html/auth/dropbox.html';
Client.authDriver(new Dropbox.Drivers.Popup({
receiverUrl: lURL, noFragment: true
}));
Client.authenticate(function(pError, pClient) {
Util.log(pError);
Client = pClient;
Util.exec(pCallBack);
});
});
};
/**
* upload file to DropBox
*/
DropBoxStore.uploadFile = function(pParams, pCallBack){
var lContent = pParams.data,
lName = pParams.name;
if(lContent){
DOM.Images.showLoad();
if(!lName)
lName = Util.getDate();
Client.writeFile(lName, lContent, function(pError, pData){
DOM.Images.hideLoad();
Util.log(pError || pData);
Util.exec(pCallBack);
});
}
return lContent;
};
DropBoxStore.init = function(pCallBack){
Util.loadOnLoad([
Util.retExec(pCallBack),
getUserData,
DropBoxStore.login,
load
]);
CloudCmd.DropBox.init = null;
};
CloudCmd.DropBox = DropBoxStore;
})(CloudCommander, Util, DOM);