1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/rocketchat_ynh.git synced 2024-09-03 20:16:25 +02:00
rocketchat_ynh/sources/programs/server/packages/jalik_ufs-gridfs.js
2016-04-29 16:32:48 +02:00

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