data-man-buffer.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. var bufferStreamReader = Npm.require('buffer-stream-reader');
  2. /**
  3. * @method DataMan.Buffer
  4. * @public
  5. * @constructor
  6. * @param {Buffer} buffer
  7. * @param {String} type The data content (MIME) type.
  8. */
  9. DataMan.Buffer = function DataManBuffer(buffer, type) {
  10. var self = this;
  11. self.buffer = buffer;
  12. self._type = type;
  13. };
  14. /**
  15. * @method DataMan.Buffer.prototype.getBuffer
  16. * @private
  17. * @param {function} callback callback(err, buffer)
  18. * @returns {Buffer|undefined}
  19. *
  20. * Passes a Buffer representing the data to a callback.
  21. */
  22. DataMan.Buffer.prototype.getBuffer = function dataManBufferGetBuffer(callback) {
  23. callback(null, this.buffer);
  24. };
  25. /**
  26. * @method DataMan.Buffer.prototype.getDataUri
  27. * @private
  28. * @param {function} callback callback(err, dataUri)
  29. *
  30. * Passes a data URI representing the data in the buffer to a callback.
  31. */
  32. DataMan.Buffer.prototype.getDataUri = function dataManBufferGetDataUri(callback) {
  33. var self = this;
  34. if (!self._type) {
  35. callback(new Error("DataMan.getDataUri couldn't get a contentType"));
  36. } else {
  37. var dataUri = "data:" + self._type + ";base64," + self.buffer.toString("base64");
  38. callback(null, dataUri);
  39. }
  40. };
  41. /**
  42. * @method DataMan.Buffer.prototype.createReadStream
  43. * @private
  44. *
  45. * Returns a read stream for the data.
  46. */
  47. DataMan.Buffer.prototype.createReadStream = function dataManBufferCreateReadStream() {
  48. return new bufferStreamReader(this.buffer);
  49. };
  50. /**
  51. * @method DataMan.Buffer.prototype.size
  52. * @param {function} callback callback(err, size)
  53. * @private
  54. *
  55. * Passes the size in bytes of the data in the buffer to a callback.
  56. */
  57. DataMan.Buffer.prototype.size = function dataManBufferSize(callback) {
  58. var self = this;
  59. if (typeof self._size === "number") {
  60. callback(null, self._size);
  61. return;
  62. }
  63. self._size = self.buffer.length;
  64. callback(null, self._size);
  65. };
  66. /**
  67. * @method DataMan.Buffer.prototype.type
  68. * @private
  69. *
  70. * Returns the type of the data.
  71. */
  72. DataMan.Buffer.prototype.type = function dataManBufferType() {
  73. return this._type;
  74. };