mirror of
https://github.com/YunoHost-Apps/rocketchat_ynh.git
synced 2024-09-03 20:16:25 +02:00
125 lines
9.5 KiB
JavaScript
125 lines
9.5 KiB
JavaScript
(function () {
|
|
|
|
/* Imports */
|
|
var Meteor = Package.meteor.Meteor;
|
|
var check = Package.check.check;
|
|
var Match = Package.check.Match;
|
|
var _ = Package.underscore._;
|
|
var MongoInternals = Package.mongo.MongoInternals;
|
|
var Mongo = Package.mongo.Mongo;
|
|
var UploadFS = Package['jalik:ufs'].UploadFS;
|
|
|
|
/* Package-scope variables */
|
|
var mongoStore;
|
|
|
|
(function(){
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// packages/jalik_ufs-gridfs/ufs-gridfs.js //
|
|
// //
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
if (Meteor.isServer) { // 1
|
|
var Grid = Npm.require('gridfs-stream'); // 2
|
|
} // 3
|
|
// 4
|
|
/** // 5
|
|
* GridFS store // 6
|
|
* @param options // 7
|
|
* @constructor // 8
|
|
*/ // 9
|
|
UploadFS.store.GridFS = function (options) { // 10
|
|
// Set default options // 11
|
|
options = _.extend({ // 12
|
|
chunkSize: 1024 * 255, // 13
|
|
collectionName: 'uploadfs' // 14
|
|
}, options); // 15
|
|
// 16
|
|
// Check options // 17
|
|
if (!Match.test(options.chunkSize, Number)) { // 18
|
|
throw new TypeError('chunkSize is not a number'); // 19
|
|
} // 20
|
|
// 21
|
|
if (!Match.test(options.collectionName, String)) { // 22
|
|
throw new TypeError('collectionName is not a string'); // 23
|
|
} // 24
|
|
// 25
|
|
// Create the store // 26
|
|
var store = new UploadFS.Store(options); // 27
|
|
// 28
|
|
if (Meteor.isServer) { // 29
|
|
var mongo = Package.mongo.MongoInternals.NpmModule; // 30
|
|
var db = Package.mongo.MongoInternals.defaultRemoteCollectionDriver().mongo.db;
|
|
// 32
|
|
mongoStore = new Grid(db, mongo); // 33
|
|
// 34
|
|
/** // 35
|
|
* Removes the file // 36
|
|
* @param fileId // 37
|
|
* @param callback // 38
|
|
*/ // 39
|
|
store.delete = function (fileId, callback) { // 40
|
|
if (typeof callback !== 'function') { // 41
|
|
callback = function (err) { // 42
|
|
if (err) { // 43
|
|
console.error(err); // 44
|
|
} // 45
|
|
} // 46
|
|
} // 47
|
|
// 48
|
|
return mongoStore.remove({ // 49
|
|
filename: fileId, // 50
|
|
root: options.collectionName // 51
|
|
}, callback); // 52
|
|
}; // 53
|
|
// 54
|
|
/** // 55
|
|
* Returns the file read stream // 56
|
|
* @param fileId // 57
|
|
* @return {*} // 58
|
|
*/ // 59
|
|
store.getReadStream = function (fileId) { // 60
|
|
return mongoStore.createReadStream({ // 61
|
|
_id: fileId, // 62
|
|
root: options.collectionName // 63
|
|
}); // 64
|
|
}; // 65
|
|
// 66
|
|
/** // 67
|
|
* Returns the file write stream // 68
|
|
* @param fileId // 69
|
|
* @return {*} // 70
|
|
*/ // 71
|
|
store.getWriteStream = function (fileId, file) { // 72
|
|
var writeStream = mongoStore.createWriteStream({ // 73
|
|
_id: fileId, // 74
|
|
filename: fileId, // 75
|
|
mode: 'w', // 76
|
|
chunkSize: options.chunkSize, // 77
|
|
root: options.collectionName, // 78
|
|
content_type: file.type // 79
|
|
}); // 80
|
|
// 81
|
|
writeStream.on('close', function() { // 82
|
|
writeStream.emit('finish'); // 83
|
|
}); // 84
|
|
// 85
|
|
return writeStream; // 86
|
|
}; // 87
|
|
} // 88
|
|
// 89
|
|
return store; // 90
|
|
}; // 91
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
|
|
/* Exports */
|
|
if (typeof Package === 'undefined') Package = {};
|
|
Package['jalik:ufs-gridfs'] = {};
|
|
|
|
})();
|
|
|
|
//# sourceMappingURL=jalik_ufs-gridfs.js.map
|