Browse Source

Include stream processing inside cache function

Response will always be a stream now
cache-clone-stream
Luke Childs 8 years ago
parent
commit
75a999545a
  1. 21
      index.js

21
index.js

@ -61,15 +61,7 @@ function requestAsEventEmitter(opts) {
response.url = redirectUrl || requestUrl;
response.requestUrl = requestUrl;
const policy = new CachePolicy(opts, response);
if (opts.cache && policy.storable()) {
const encoding = opts.encoding === null ? 'buffer' : opts.encoding;
getStream(response, {encoding})
.then(body => {
response.body = body;
cacheResponse(response, policy, opts);
});
}
maybeCacheResponse(response, opts);
ee.emit('response', response);
});
@ -335,7 +327,15 @@ function normalizeArguments(url, opts) {
return opts;
}
function cacheResponse(response, policy, opts) {
function maybeCacheResponse(response, opts) {
const policy = new CachePolicy(opts, response);
if (!(opts.cache && policy.storable())) {
return;
}
const encoding = opts.encoding === null ? 'buffer' : opts.encoding;
getStream(response, {encoding})
.then(body => {
response.body = body;
const key = cacheKey(opts);
const value = {
policy: policy.toObject(),
@ -349,6 +349,7 @@ function cacheResponse(response, policy, opts) {
}
};
opts.cache.set(key, value);
});
}
function cacheKey(opts) {

Loading…
Cancel
Save