mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
107 lines
No EOL
3.6 KiB
JavaScript
107 lines
No EOL
3.6 KiB
JavaScript
var CloudCmd, Util, DOM, gapi;
|
|
|
|
(function(CloudCmd, Util, DOM){
|
|
'use strict';
|
|
|
|
var GDrive = {};
|
|
|
|
|
|
/* PRIVATE FUNCTIONS */
|
|
|
|
/**
|
|
* load google api library
|
|
*/
|
|
function load(callback){
|
|
/* https://code.google.com/p/google-api-javascript-client/ */
|
|
var lUrl = 'https://apis.google.com/js/client.js';
|
|
|
|
DOM.load.js(lUrl, function() {
|
|
DOM.Files.get('modules', function(error, modules) {
|
|
var storage = Util.findObjByNameInArr(modules, 'storage'),
|
|
gDrive = Util.findObjByNameInArr(storage, 'GDrive'),
|
|
gDriveId = gDrive && gDrive.id,
|
|
/* https://developers.google.com/drive/credentials */
|
|
|
|
clientId = gDriveId + '.apps.googleusercontent.com',
|
|
scopes = 'https://www.googleapis.com/auth/drive',
|
|
|
|
lParams = {
|
|
'client_id' : clientId,
|
|
'scope' : scopes,
|
|
'immediate' : false
|
|
};
|
|
|
|
setTimeout(function() {
|
|
gapi.auth.authorize(lParams, function(pAuthResult){
|
|
|
|
if (pAuthResult && !pAuthResult.error)
|
|
gapi.client.load('drive', 'v2', Util.exec.ret(callback));
|
|
});
|
|
|
|
}, 1500);
|
|
});
|
|
});
|
|
}
|
|
|
|
|
|
/**
|
|
* Insert new file.
|
|
*
|
|
* @param {File} fileData {name, data} File object to read data from.
|
|
* @param {Function} callback Function to call when the request is complete.
|
|
*/
|
|
GDrive.uploadFile = function(pParams, pCallBack) {
|
|
var lContent = pParams.data,
|
|
lName = pParams.name,
|
|
boundary = '-------314159265358979323846',
|
|
delimiter = '\r\n--' + boundary + '\r\n',
|
|
close_delim = '\r\n--' + boundary + '--',
|
|
|
|
contentType = pParams.type || 'application/octet-stream',
|
|
metadata = {
|
|
'title' : lName,
|
|
'mimeType' : contentType
|
|
},
|
|
|
|
base64Data = btoa(lContent),
|
|
|
|
multipartRequestBody =
|
|
delimiter +
|
|
'Content-Type: application/json\r\n\r\n' +
|
|
JSON.stringify(metadata) +
|
|
delimiter +
|
|
'Content-Type: ' + contentType + '\r\n' +
|
|
'Content-Transfer-Encoding: base64\r\n' +
|
|
'\r\n' +
|
|
base64Data +
|
|
close_delim;
|
|
|
|
var request = gapi.client.request({
|
|
'path': '/upload/drive/v2/files',
|
|
'method': 'POST',
|
|
'params': {'uploadType': 'multipart'},
|
|
'headers': {
|
|
'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
|
|
},
|
|
|
|
'body': multipartRequestBody
|
|
});
|
|
|
|
if (!pCallBack)
|
|
pCallBack = function(file) {
|
|
Util.log(file);
|
|
};
|
|
|
|
request.execute(pCallBack);
|
|
};
|
|
|
|
|
|
GDrive.init = function(callback) {
|
|
Util.exec.series([
|
|
load,
|
|
Util.exec.ret(callback)
|
|
]);
|
|
};
|
|
|
|
CloudCmd.GDrive = GDrive;
|
|
})(CloudCmd, Util, DOM); |