Few days ago I released the next version of the SDK. Traditionally, we update our SDKs after we have introduced new changes in Reduct Storage HTTP API. But this release is a bit special because we added streaming data to there. Let'see how we can use it.
If you're new to Reduct Storage, you can have a look at this tutorial before we start.
Reading Data
This example shows the easiest way to read a record from the storage engine and write it into a file:
const {Client} = require("reduct-js");
const fs = require("fs");
client = new Client("https://play.reduct-storage.dev");
const bucket = await client.getBucket("bucket");
const readStream = await bucket.readStream("entry-name");
const fileStream = fs.createWriteStream("somefile.txt");
readStream.pipe(fileStream);
As you can see, we created a stream from the file and piped it with the record, which is read as a stream. Then we downloaded the record and wrote it to the file asynchronously in little chunks.
Writing Data
You can write data to the storage engine with streams as well. However, you must provide the content length at the beginning of the write operation. It means you have to know the size of the record in advance. Let's see in code:
const bucket = await client.getBucket("bucket");
const fileStream = fs.createReadStream("somefile.txt");
const {size} = fs.statSync("somefile.txt");
await bucket.writeStream("entry-name", fileStream, size);
Here we read the same file as a stream and uploaded it to the storage engine. The syntax is a bit different, but essentially, it works like pipe()
.
Top comments (0)