forked from https://github.com/koajs/etag
If the response of the koa server is a stream without a path, the response header of etag can also be generated,The etag response header is generated by converting stream to buffer for etag calculation.
stream Etag support for Koa responses using etag.
$ npm install @masx200/koa-stream-etag
$ yarn add @masx200/koa-stream-etag
var etag = require("@masx200/koa-stream-etag");
Its return value is a koa middleware.
Generate a strong ETag for the given entity. This should be the complete body of the entity. Strings, Buffers, and fs.Stats are accepted. By default, a strong ETag is generated except for fs.Stats, which will generate a weak ETag (this can be overwritten by options.weak).
var options = { weak: false, sizelimit: 1000 * 1024 };
app.use(etag(options));
etag accepts these properties in the options object.
Specifies if the generated ETag will include the weak validator mark (that is, the leading W/). The actual entity tag is the same. The default value is false, unless the entity is fs.Stats, in which case it is true.
Its unit is byte.If the size of the stream is smaller than the'sizelimit', the etag response header will be generated,by converting stream to buffer for etag calculation.
const conditional = require("koa-conditional-get");
const etag = require("@masx200/koa-stream-etag");
const Koa = require("koa");
const app = new Koa();
// etag works together with conditional-get
app.use(conditional());
app.use(etag({}));
app.use(function (ctx) {
ctx.body = "Hello World";
});
app.listen(3000, () => {
console.log("listening on port 3000");
});