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. 47
      index.js

47
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,20 +327,29 @@ function normalizeArguments(url, opts) {
return opts;
}
function cacheResponse(response, policy, opts) {
const key = cacheKey(opts);
const value = {
policy: policy.toObject(),
response: {
url: response.url,
statusCode: response.statusCode,
body: {
encoding: opts.encoding,
data: response.body
}
}
};
opts.cache.set(key, value);
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(),
response: {
url: response.url,
statusCode: response.statusCode,
body: {
encoding: opts.encoding,
data: response.body
}
}
};
opts.cache.set(key, value);
});
}
function cacheKey(opts) {

Loading…
Cancel
Save