| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
							- var mime = Npm.require('mime');
 
- var fs = Npm.require("fs");
 
- /**
 
-  * @method DataMan.FilePath
 
-  * @public
 
-  * @constructor
 
-  * @param {String} filepath
 
-  * @param {String} [type] The data content (MIME) type. Will lookup from file if not passed.
 
-  */
 
- DataMan.FilePath = function DataManFilePath(filepath, type) {
 
-   var self = this;
 
-   self.filepath = filepath;
 
-   self._type = type || mime.lookup(filepath);
 
- };
 
- /**
 
-  * @method DataMan.FilePath.prototype.getBuffer
 
-  * @private
 
-  * @param {function} callback callback(err, buffer)
 
-  * @returns {Buffer|undefined}
 
-  *
 
-  * Passes a Buffer representing the data to a callback.
 
-  */
 
- DataMan.FilePath.prototype.getBuffer = function dataManFilePathGetBuffer(callback) {
 
-   var self = this;
 
-   // Call node readFile
 
-   fs.readFile(self.filepath, Meteor.bindEnvironment(function(err, buffer) {
 
-     callback(err, buffer);
 
-   }, function(err) {
 
-     callback(err);
 
-   }));
 
- };
 
- /**
 
-  * @method DataMan.FilePath.prototype.getDataUri
 
-  * @private
 
-  * @param {function} callback callback(err, dataUri)
 
-  *
 
-  * Passes a data URI representing the data to a callback.
 
-  */
 
- DataMan.FilePath.prototype.getDataUri = function dataManFilePathGetDataUri(callback) {
 
-   var self = this;
 
-   self.getBuffer(function (error, buffer) {
 
-     if (error) {
 
-       callback(error);
 
-     } else {
 
-       if (!self._type) {
 
-         callback(new Error("DataMan.getDataUri couldn't get a contentType"));
 
-       } else {
 
-         var dataUri = "data:" + self._type + ";base64," + buffer.toString("base64");
 
-         buffer = null;
 
-         callback(null, dataUri);
 
-       }
 
-     }
 
-   });
 
- };
 
- /**
 
-  * @method DataMan.FilePath.prototype.createReadStream
 
-  * @private
 
-  *
 
-  * Returns a read stream for the data.
 
-  */
 
- DataMan.FilePath.prototype.createReadStream = function dataManFilePathCreateReadStream() {
 
-   // Stream from filesystem
 
-   return fs.createReadStream(this.filepath);
 
- };
 
- /**
 
-  * @method DataMan.FilePath.prototype.size
 
-  * @param {function} callback callback(err, size)
 
-  * @private
 
-  *
 
-  * Passes the size in bytes of the data to a callback.
 
-  */
 
- DataMan.FilePath.prototype.size = function dataManFilePathSize(callback) {
 
-   var self = this;
 
-   if (typeof self._size === "number") {
 
-     callback(null, self._size);
 
-     return;
 
-   }
 
-   // We can get the size without buffering
 
-   fs.stat(self.filepath, Meteor.bindEnvironment(function (error, stats) {
 
-     if (stats && typeof stats.size === "number") {
 
-       self._size = stats.size;
 
-       callback(null, self._size);
 
-     } else {
 
-       callback(error);
 
-     }
 
-   }, function (error) {
 
-     callback(error);
 
-   }));
 
- };
 
- /**
 
-  * @method DataMan.FilePath.prototype.type
 
-  * @private
 
-  *
 
-  * Returns the type of the data.
 
-  */
 
- DataMan.FilePath.prototype.type = function dataManFilePathType() {
 
-   return this._type;
 
- };
 
 
  |