it('should extract a buffer and preserve the remaining data in the buffer', () => { let expectedString = 'AJ'; let extraBuffer = new Buffer(expectedString); // declare the big buffer let buffer = new Buffer(k.OBCIPacketSize + extraBuffer.length); // Fill that new big buffer with buffers openBCIUtilities.samplePacketReal(0).copy(buffer, 0); extraBuffer.copy(buffer, k.OBCIPacketSize); // Reset the spy if it exists if (_processQualifiedPacketSpy) _processQualifiedPacketSpy.reset(); // Call the function under test buffer = ourBoard._processDataBuffer(buffer); // Ensure that we extracted only one buffer _processQualifiedPacketSpy.should.have.been.called(); // The buffer should have the epxected number of bytes left buffer.length.should.equal(expectedString.length); // Convert the buffer to a string and ensure that it equals the expected string buffer.toString().should.equal(expectedString); });
/** * Badly decrypt message from format bulbs use * @module decrypt * @param {Buffer} buffer Buffer of data to decrypt * @param {Number} key Encryption key (default is generally correct) * @return {Buffer} Decrypted data * @example ```js const decrypted = TPLSmartDevice.decrypt(encrypted) ``` */ static decrypt (buffer, key = 0xAB) { for (let i = 0; i < buffer.length; i++) { const c = buffer[i] buffer[i] = c ^ key key = c } return buffer }
test('small responses cached', t => { tnock(t, HOST).get('/test').reply(200, CONTENT, { 'Content-Length': CONTENT.length, 'cache-control': HEADERS['cache-control'] }) return fetch(`${HOST}/test`, { cacheManager: CACHE, retry: {retries: 0} }).then(res => res.buffer()).then(body => { t.deepEqual(body, CONTENT, 'got remote content') return fetch(`${HOST}/test`, { cacheManager: CACHE, retry: {retries: 0} }) }).then(res => { t.equal(res.status, 200, 'non-stale cached res has 200 status') return res.buffer() }).then(body => { t.deepEqual(body, CONTENT, 'got cached content') }) })
client.send(message, 0, message.length, 9999, this.ip, (err, bytes) => { if (err) { return reject(err)
it('should be able to get multiple packets with junk in the middle and end', () => { let expectedString = ','; let extraBuffer = new Buffer(expectedString); // We are going to extract multiple buffers let expectedNumberOfBuffers = 2; // declare the big buffer let buffer = new Buffer(k.OBCIPacketSize * expectedNumberOfBuffers + extraBuffer.length * 2); // Fill that new big buffer with buffers openBCIUtilities.samplePacketReal(0).copy(buffer, 0); extraBuffer.copy(buffer, k.OBCIPacketSize); openBCIUtilities.samplePacketReal(1).copy(buffer, k.OBCIPacketSize + extraBuffer.byteLength); extraBuffer.copy(buffer, k.OBCIPacketSize * 2 + extraBuffer.byteLength); // Reset the spy if it exists if (_processQualifiedPacketSpy) _processQualifiedPacketSpy.reset(); // Call the function under test buffer = ourBoard._processDataBuffer(buffer); // Ensure that we extracted only one buffer _processQualifiedPacketSpy.should.have.been.calledTwice(); // The buffer should not have anything in it any more expect(bufferEqual(Buffer.concat([extraBuffer, extraBuffer], 2), buffer)).to.be.true(); buffer.length.should.equal(extraBuffer.length * 2); });
client.setBroadcast(true) const msgBuf = TPLSmartDevice.encrypt(Buffer.from('{"system":{"get_sysinfo":{}}}')) client.send(msgBuf, 0, msgBuf.length, 9999, broadcast) }) client.on('message', (msg, rinfo) => {
if (typeof handle.symname !== 'undefined') { countsymnames++ buflength+=17+handle.symname.length } else { var bufsymname = stringToBuffer(handle.symname) bufsymname.copy(buf,indexsynname,0,bufsymname.length) indexsynname+=bufsymname.length buf.writeUInt32LE(ADSIGRP.GET_SYMHANDLE_BYNAME,index+0) buf.writeUInt32LE(0x00000000,index+4) buf.writeUInt32LE(0x00000004,index+8) buf.writeUInt32LE(bufsymname.length,index+12) index+=16 cb.call(ads.adsClient, err) } else { if (result.length > 0) { var resultpos = 0 var handlespos = countsymnames*8
var offset = 0 var convert = {} for (var i = 0; i < handle.propname.length; i++) { p = handle.propname[i] getItemByteLength(handle.bytelength[i], convert) val.copy(buf, offset,0,convert.length) if ((typeof val !== 'undefined') && convert.isAdsType && (buf.length >= offset+convert.length)) { var datetime var timeoffset break case 'STRING': var stringbuf = Buffer.from(val.toString().slice(0,convert.length-1) + '\0', 'binary') stringbuf.copy(buf, offset) break offset+=convert.length
it('should be able to get multiple packets and keep extra data on the end', () => { let expectedString = 'AJ'; let extraBuffer = new Buffer(expectedString); // We are going to extract multiple buffers let expectedNumberOfBuffers = 2; // declare the big buffer let buffer = new Buffer(k.OBCIPacketSize * expectedNumberOfBuffers + extraBuffer.length); // Fill that new big buffer with buffers openBCIUtilities.samplePacketReal(0).copy(buffer, 0); openBCIUtilities.samplePacketReal(1).copy(buffer, k.OBCIPacketSize); extraBuffer.copy(buffer, k.OBCIPacketSize * 2); // Reset the spy if it exists if (_processQualifiedPacketSpy) _processQualifiedPacketSpy.reset(); // Call the function under test buffer = ourBoard._processDataBuffer(buffer); // Ensure that we extracted only one buffer _processQualifiedPacketSpy.should.have.been.calledTwice(); // The buffer should not have anything in it any more buffer.length.should.equal(extraBuffer.length); });
if (data.length > 0xff) { throw new Error( `Data: ${data} is too long for signature type (${data.length} > 255)` ); for (var ii = 0; ii < data.length; ++ii) { if (parenCount > 32) { throw new Error( const buff = Buffer.from(data, 'utf8'); ps .word32le(buff.length) .put(buff) .word8(0); ps._offset += 5 + buff.length; }; break; .word8(data.length) .put(buff) .word8(0); ps._offset += 2 + buff.length; }; break;
it('should be able to get multiple packets with junk in the middle', () => { let expectedString = ','; let extraBuffer = new Buffer(expectedString); // We are going to extract multiple buffers let expectedNumberOfBuffers = 2; // declare the big buffer let buffer = new Buffer(k.OBCIPacketSize * expectedNumberOfBuffers + extraBuffer.length); // Fill that new big buffer with buffers openBCIUtilities.samplePacketReal(0).copy(buffer, 0); extraBuffer.copy(buffer, k.OBCIPacketSize); openBCIUtilities.samplePacketReal(1).copy(buffer, k.OBCIPacketSize + extraBuffer.byteLength); // Reset the spy if it exists if (_processQualifiedPacketSpy) _processQualifiedPacketSpy.reset(); // Call the function under test buffer = ourBoard._processDataBuffer(buffer); // Ensure that we extracted only one buffer _processQualifiedPacketSpy.should.have.been.calledTwice(); // The buffer should not have anything in it any more bufferEqual(extraBuffer, buffer).should.be.true(); buffer.length.should.equal(extraBuffer.length); });
/** * Badly encrypt message in format bulbs use * @module encrypt * @param {Buffer} buffer Buffer of data to encrypt * @param {Number} key Encryption key (default is generally correct) * @return {Buffer} Encrypted data * @example ```js const encrypted = TPLSmartDevice.encrypt(Buffer.from('super secret text')) ``` */ static encrypt (buffer, key = 0xAB) { for (let i = 0; i < buffer.length; i++) { const c = buffer[i] buffer[i] = c ^ key key = buffer[i] } return buffer }