2015-12-02 21:39:40 +01:00
|
|
|
'use strict';
|
|
|
|
|
2015-12-12 09:53:50 +01:00
|
|
|
var DropboxLink = require('../comp/dropbox-link'),
|
|
|
|
Logger = require('../util/logger');
|
|
|
|
|
|
|
|
var logger = new Logger('storage-dropbox');
|
2015-12-02 21:39:40 +01:00
|
|
|
|
|
|
|
var StorageDropbox = {
|
|
|
|
name: 'dropbox',
|
2016-03-12 12:22:35 +01:00
|
|
|
icon: 'dropbox',
|
2015-12-02 21:39:40 +01:00
|
|
|
enabled: true,
|
|
|
|
|
2015-12-12 16:43:43 +01:00
|
|
|
_convertError: function(err) {
|
|
|
|
if (!err) {
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
if (err.status === DropboxLink.ERROR_NOT_FOUND) {
|
|
|
|
err.notFound = true;
|
|
|
|
}
|
|
|
|
if (err.status === DropboxLink.ERROR_CONFLICT) {
|
|
|
|
err.revConflict = true;
|
|
|
|
}
|
|
|
|
return err;
|
|
|
|
},
|
|
|
|
|
|
|
|
getPathForName: function(fileName) {
|
|
|
|
return '/' + fileName + '.kdbx';
|
|
|
|
},
|
|
|
|
|
2015-12-02 21:39:40 +01:00
|
|
|
load: function(path, callback) {
|
2015-12-12 09:53:50 +01:00
|
|
|
logger.debug('Load', path);
|
|
|
|
var ts = logger.ts();
|
2015-12-07 20:07:56 +01:00
|
|
|
DropboxLink.openFile(path, function(err, data, stat) {
|
2015-12-12 09:53:50 +01:00
|
|
|
logger.debug('Loaded', path, stat ? stat.versionTag : null, logger.ts(ts));
|
2015-12-12 16:43:43 +01:00
|
|
|
err = StorageDropbox._convertError(err);
|
2015-12-08 20:18:35 +01:00
|
|
|
if (callback) { callback(err, data, stat ? { rev: stat.versionTag } : null); }
|
2015-12-12 09:53:50 +01:00
|
|
|
}, _.noop);
|
2015-12-08 20:18:35 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
stat: function(path, callback) {
|
2015-12-12 09:53:50 +01:00
|
|
|
logger.debug('Stat', path);
|
|
|
|
var ts = logger.ts();
|
2015-12-08 20:18:35 +01:00
|
|
|
DropboxLink.stat(path, function(err, stat) {
|
2015-12-13 21:03:29 +01:00
|
|
|
if (stat && stat.isRemoved) {
|
2015-12-12 16:43:43 +01:00
|
|
|
err = new Error('File removed');
|
|
|
|
err.notFound = true;
|
|
|
|
}
|
2015-12-12 09:53:50 +01:00
|
|
|
logger.debug('Stated', path, stat ? stat.versionTag : null, logger.ts(ts));
|
2015-12-12 16:43:43 +01:00
|
|
|
err = StorageDropbox._convertError(err);
|
2015-12-08 20:18:35 +01:00
|
|
|
if (callback) { callback(err, stat ? { rev: stat.versionTag } : null); }
|
2015-12-12 09:53:50 +01:00
|
|
|
}, _.noop);
|
2015-12-02 21:39:40 +01:00
|
|
|
},
|
|
|
|
|
2015-12-10 20:44:02 +01:00
|
|
|
save: function(path, data, callback, rev) {
|
2015-12-12 09:53:50 +01:00
|
|
|
logger.debug('Save', path, rev);
|
|
|
|
var ts = logger.ts();
|
2015-12-12 16:43:43 +01:00
|
|
|
DropboxLink.saveFile(path, data, rev, function(err, stat) {
|
2015-12-12 09:53:50 +01:00
|
|
|
logger.debug('Saved', path, logger.ts(ts));
|
2015-12-11 21:51:16 +01:00
|
|
|
if (!callback) { return; }
|
2015-12-12 16:43:43 +01:00
|
|
|
err = StorageDropbox._convertError(err);
|
|
|
|
callback(err, stat ? { rev: stat.versionTag } : null);
|
2015-12-12 09:53:50 +01:00
|
|
|
}, _.noop);
|
2015-12-02 21:39:40 +01:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = StorageDropbox;
|