UNPKG

node-aurora

Version:

Provides an interface to the Aurora Dreamband.

58 lines (38 loc) 1.81 kB
'use strict'; var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _stream = require('stream'); var _stream2 = _interopRequireDefault(_stream); var _bufferCrc = require('buffer-crc32'); var _bufferCrc2 = _interopRequireDefault(_bufferCrc); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = function (destPath, dataOrReadStream) { var _this = this; var rename = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var connector = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'any'; var destPathSegments = destPath.split('/'); var destFileName = destPathSegments.pop(); var destFileDir = destPathSegments.length ? destPathSegments.join('/') : '/'; var crc = void 0; var stream = dataOrReadStream; //convert to stream in case of string or buffer if (typeof dataOrReadStream == 'string' || Buffer.isBuffer(dataOrReadStream)) { stream = new _stream2.default.Readable(); stream._read = function () {}; stream.push(dataOrReadStream.toString()); stream.push(null); } stream.pause(); stream.on('data', function (chunk) { crc = _bufferCrc2.default.unsigned(chunk, crc); }); return this.queueCmd('sd-file-write ' + destFileName + ' ' + destFileDir + ' ' + (rename ? 1 : 0) + ' 1 500', connector, function (cmd) { _this.once('cmdInputRequested', function (inputStream) { stream.pipe(inputStream); stream.resume(); }); }).then(function (cmdWithResponse) { if (cmdWithResponse.response.crc != crc) return _promise2.default.reject('CRC failed.'); return cmdWithResponse; }); };