summaryrefslogtreecommitdiff
path: root/node_modules/http-basic/lib/memory-cache.js
blob: cf1f5a97909336273c1722bd10d35b5f5b4736f9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'use strict';

var PassThrough = require('stream').PassThrough;
var concat = require('concat-stream');
var Response = require('http-response-object');

module.exports = MemoryCache;
function MemoryCache() {
  this._cache = {};
}

MemoryCache.prototype.getResponse = function (url, callback) {
  var cache = this._cache;
  if (cache[url]) {
    var body = new PassThrough();
    body.end(cache[url].body);
    callback(null, {
      statusCode: cache[url].statusCode,
      headers: cache[url].headers,
      body: body,
      requestHeaders: cache[url].requestHeaders,
      requestTimestamp: cache[url].requestTimestamp
    });
  } else {
    callback(null, null);
  }
};
MemoryCache.prototype.setResponse = function (url, response) {
  var cache = this._cache;
  response.body.pipe(concat(function (body) {
    cache[url] = {
      statusCode: response.statusCode,
      headers: response.headers,
      body: body,
      requestHeaders: response.requestHeaders,
      requestTimestamp: response.requestTimestamp
    };
  }));
};