| var isStream = require('is-stream'); |
| |
| /** |
| * Creates an Attachment object. |
| * @param options Buffer representing attachment data |
| * data - one of: |
| * - string representing the full file path |
| * - buffer of the data |
| * - readable interface (stream) |
| * filename - optionally the filename to be used for the attachment, should be used if passing |
| * buffer or stream in the data param |
| * contentType - the content type for header info. Should be passed in if using stream for data |
| * knownLength - the known length of the data. Should be passed in if using stream for data |
| * @constructor |
| */ |
| var Attachment = module.exports = function Attachment(options) { |
| var data = options.data; |
| |
| if (data) { |
| if (typeof data === 'string' || Buffer.isBuffer(data) || isStream(data)) { |
| this.data = data; |
| } |
| } |
| |
| this.filename = options.filename; |
| this.contentType = options.contentType; |
| this.knownLength = options.knownLength; |
| }; |
| |
| Attachment.prototype.getType = function () { |
| if (this.data) { |
| if (typeof this.data === 'string') { |
| return 'path'; |
| } |
| else if (Buffer.isBuffer(this.data)) { |
| return 'buffer'; |
| } |
| else if (isStream(this.data)) { |
| return 'stream'; |
| } |
| } |
| |
| return 'unknown'; |
| }; |