cache hns response for 5 minutes (#366)
This commit is contained in:
parent
93341a3d4d
commit
746da81725
|
@ -6,7 +6,8 @@
|
|||
"dependencies": {
|
||||
"express": "^4.17.1",
|
||||
"express-http-proxy": "^1.6.2",
|
||||
"hs-client": "^0.0.9"
|
||||
"hs-client": "^0.0.9",
|
||||
"node-cache": "^5.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "^2.0.5"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
const url = require("url");
|
||||
const express = require("express");
|
||||
const proxy = require("express-http-proxy");
|
||||
const NodeCache = require("node-cache");
|
||||
const { NodeClient } = require("hs-client");
|
||||
|
||||
const host = process.env.HOSTNAME || "0.0.0.0";
|
||||
|
@ -18,16 +19,21 @@ const clientOptions = {
|
|||
apiKey: hsdApiKey,
|
||||
};
|
||||
const client = new NodeClient(clientOptions);
|
||||
const cache = new NodeCache({ stdTTL: 300 }); // cache for 5 minutes
|
||||
|
||||
// Match both `sia://HASH` and `HASH` links.
|
||||
const startsWithSkylinkRegExp = /^(sia:\/\/)?[a-zA-Z0-9_-]{46}/;
|
||||
|
||||
const getDomainRecords = async (name) => {
|
||||
if (cache.has(name)) return cache.get(name);
|
||||
|
||||
const response = await client.execute("getnameresource", [name]);
|
||||
const records = response?.records ?? null;
|
||||
|
||||
console.log(`${name} => ${JSON.stringify(records)}`);
|
||||
|
||||
cache.set(name, records);
|
||||
|
||||
return records;
|
||||
};
|
||||
|
||||
|
|
12
yarn.lock
12
yarn.lock
|
@ -3928,6 +3928,11 @@ clone-response@1.0.2, clone-response@^1.0.2:
|
|||
dependencies:
|
||||
mimic-response "^1.0.0"
|
||||
|
||||
clone@2.x:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
|
||||
integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
|
||||
|
||||
coa@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
|
||||
|
@ -10238,6 +10243,13 @@ node-addon-api@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.0.tgz#812446a1001a54f71663bed188314bba07e09247"
|
||||
integrity sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==
|
||||
|
||||
node-cache@^5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d"
|
||||
integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==
|
||||
dependencies:
|
||||
clone "2.x"
|
||||
|
||||
node-emoji@^1.10.0:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da"
|
||||
|
|
Reference in New Issue