smb2c
Version:
SMB2 Client from marsaud-smb2 0.7.2
2 lines • 5.38 kB
JavaScript
;var _get=require('babel-runtime/helpers/get')['default'];var _inherits=require('babel-runtime/helpers/inherits')['default'];var _createClass=require('babel-runtime/helpers/create-class')['default'];var _classCallCheck=require('babel-runtime/helpers/class-call-check')['default'];var _regeneratorRuntime=require('babel-runtime/regenerator')['default'];var _Promise=require('babel-runtime/core-js/promise')['default'];var _interopRequireDefault=require('babel-runtime/helpers/interop-require-default')['default'];Object.defineProperty(exports,'__esModule',{value:true});var marked0$0=[fibonacci].map(_regeneratorRuntime.mark);var _toolsBigint=require('../tools/bigint');var _toolsBigint2=_interopRequireDefault(_toolsBigint);var _bluebird=require('bluebird');var _bluebird2=_interopRequireDefault(_bluebird);var _toolsSmb2Forge=require('../tools/smb2-forge');var _stream=require('stream');var _structuresConstants=require('../structures/constants');var requestAsync=_bluebird2['default'].promisify(_toolsSmb2Forge.request);var maxPacketSize=new _toolsBigint2['default'](8,0x00010000 - 0x71);function fibonacci(){var a,b,c;return _regeneratorRuntime.wrap(function fibonacci$(context$1$0){while(1) switch(context$1$0.prev = context$1$0.next){case 0:a = 1;b = 2;case 2:c = a;a = b;b = c + a;context$1$0.next = 7;return c;case 7:context$1$0.next = 2;break;case 9:case 'end':return context$1$0.stop();}},marked0$0[0],this);}var SmbWritableStream=(function(_Writable){_inherits(SmbWritableStream,_Writable);function SmbWritableStream(connection,file){var options=arguments.length <= 2 || arguments[2] === undefined?{}:arguments[2];_classCallCheck(this,SmbWritableStream);_get(Object.getPrototypeOf(SmbWritableStream.prototype),'constructor',this).call(this,options);var _options$encoding=options.encoding;var encoding=_options$encoding === undefined?'utf8':_options$encoding;var _options$start=options.start;var start=_options$start === undefined?0:_options$start;this.connection = connection;this.encoding = encoding;this.file = file;this.offset = new _toolsBigint2['default'](8,start);}_createClass(SmbWritableStream,[{key:'_write',value:function _write(chunk,encoding,next){var _loop;return _regeneratorRuntime.async(function _write$(context$2$0){var _this=this;while(1) switch(context$2$0.prev = context$2$0.next){case 0:encoding = this.encoding || encoding;chunk = Buffer.isBuffer(chunk)?chunk:new Buffer(chunk,encoding);_loop = function callee$2$0(){var packetSize,packet,offset,retryInterval,pending;return _regeneratorRuntime.async(function callee$2$0$(context$3$0){while(1) switch(context$3$0.prev = context$3$0.next){case 0:packetSize = Math.min(maxPacketSize.toNumber(),chunk.length);packet = chunk.slice(0,packetSize);chunk = chunk.slice(packetSize);offset = new _toolsBigint2['default'](this.offset);this.offset = this.offset.add(packetSize);retryInterval = fibonacci();pending = true;case 7:if(!pending){context$3$0.next = 24;break;}context$3$0.prev = 8;context$3$0.next = 11;return _regeneratorRuntime.awrap(requestAsync('write',{FileId:this.file.FileId,Offset:offset.toBuffer(),Buffer:packet},this.connection));case 11:pending = false;context$3$0.next = 22;break;case 14:context$3$0.prev = 14;context$3$0.t0 = context$3$0['catch'](8);if(!(context$3$0.t0.code === 'STATUS_PENDING')){context$3$0.next = 21;break;}context$3$0.next = 19;return _regeneratorRuntime.awrap(new _Promise(function(resolve,reject){setTimeout(resolve,retryInterval.next().value);}));case 19:context$3$0.next = 22;break;case 21:throw context$3$0.t0;case 22:context$3$0.next = 7;break;case 24:case 'end':return context$3$0.stop();}},null,_this,[[8,14]]);};case 3:if(!(chunk.length > 0)){context$2$0.next = 8;break;}context$2$0.next = 6;return _regeneratorRuntime.awrap(_loop());case 6:context$2$0.next = 3;break;case 8:next();case 9:case 'end':return context$2$0.stop();}},null,this);}},{key:'end',value:function end(){var _len,args,_key,args$2$0=arguments;return _regeneratorRuntime.async(function end$(context$2$0){while(1) switch(context$2$0.prev = context$2$0.next){case 0:context$2$0.prev = 0;for(_len = args$2$0.length,args = Array(_len),_key = 0;_key < _len;_key++) {args[_key] = args$2$0[_key];}_get(Object.getPrototypeOf(SmbWritableStream.prototype),'end',this).apply(this,args);case 3:context$2$0.prev = 3;context$2$0.next = 6;return _regeneratorRuntime.awrap(requestAsync('close',this.file,this.connection));case 6:return context$2$0.finish(3);case 7:case 'end':return context$2$0.stop();}},null,this,[[0,,3,7]]);}}]);return SmbWritableStream;})(_stream.Writable);exports['default'] = function(path,options,cb){var _this2=this;if(typeof options === 'function'){cb = options;options = {};}var createDisposition=undefined;var flags=options && options.flags;if(flags === 'r'){createDisposition = _structuresConstants.FILE_OPEN;}else if(flags === 'r+'){createDisposition = _structuresConstants.FILE_OPEN_IF;}else if(flags === 'w' || flags === 'w+'){createDisposition = _structuresConstants.FILE_OVERWRITE_IF;}else if(flags === 'wx' || flags === 'w+x'){createDisposition = _structuresConstants.FILE_CREATE;}(0,_toolsSmb2Forge.request)('create',{path:path,createDisposition:createDisposition},this,function(err,file){if(err){cb(err);}else {cb(null,new SmbWritableStream(_this2,file,options));}});};module.exports = exports['default'];
//# sourceMappingURL=createWriteStream.js.map