diff options
author | kaotisk <kaotisk@arching-kaos.org> | 2023-04-10 15:49:11 +0300 |
---|---|---|
committer | kaotisk <kaotisk@arching-kaos.org> | 2023-04-10 15:49:11 +0300 |
commit | 02451920cffb8314656b42bb6f7dc9c8e97f366e (patch) | |
tree | 77eafb12b592b6e48282b6405712e6e132727c44 /api | |
parent | 5cafa276f4a243740113c5c813fab04918fa5c96 (diff) | |
download | arching-kaos-tools-02451920cffb8314656b42bb6f7dc9c8e97f366e.tar.gz arching-kaos-tools-02451920cffb8314656b42bb6f7dc9c8e97f366e.tar.bz2 arching-kaos-tools-02451920cffb8314656b42bb6f7dc9c8e97f366e.zip |
New API route to fetch content from IPFS hashes that is cached in the filesystem
Diffstat (limited to 'api')
-rw-r--r-- | api/routes/getInnerIPFSContent/index.js | 32 | ||||
-rw-r--r-- | api/routes/index.js | 3 |
2 files changed, 35 insertions, 0 deletions
diff --git a/api/routes/getInnerIPFSContent/index.js b/api/routes/getInnerIPFSContent/index.js new file mode 100644 index 0000000..555d2a3 --- /dev/null +++ b/api/routes/getInnerIPFSContent/index.js @@ -0,0 +1,32 @@ +const { spawn } = require('child_process'); +const fs = require("fs"); +const config = require("../../config"); + +/* + * Gets the local latest zblock + * + * Returns: + * - JSON object + * { zlatest: "Qm..." } + * + */ +function fetchZblock(zblock, res){ + res.send(fs.readFileSync(config.workDir+"/ipfs/"+zblock)); +}; +module.exports = (req, res) => { + console.log(req.query) + if ( (req.query.ipfs) && req.query.ipfs.length === 46 ){ + regex= /Qm[A-Za-z0-9]{44}/; + if (regex.test(req.query.ipfs)){ + if (req.query.ipfs === "QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH" ){ + res.send({errno:"Genesis block"}); + } else { + fetchZblock(req.query.ipfs,res); + } + } else { + res.send({errno:"Invalid data: regexp failed to pass"}); + } + } else { + res.send({errno:"Invalid data: no valid zblock was provided"}); + } +} diff --git a/api/routes/index.js b/api/routes/index.js index 5842757..2b649e9 100644 --- a/api/routes/index.js +++ b/api/routes/index.js @@ -11,6 +11,7 @@ const getZChain = require('./getZChain'); const receiveZBlock = require('./receiveZBlock'); const receiveZChain = require('./receiveZChain'); const getZblock = require('./getZblock'); +const getInnerIPFSContent = require('./getInnerIPFSContent'); const corsOptions = { origin: '*', optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 @@ -35,6 +36,8 @@ router.route(settings.URL_PREFIX+'/sblock').get(getSBlock); router.route(settings.URL_PREFIX+'/zchain').get(getZChain); // Returns latest zblock from node's local chain router.route(settings.URL_PREFIX+'/zlatest').get(getZLatest); +// Returns content +router.route(settings.URL_PREFIX+'/content').get(getInnerIPFSContent); // Returns zblock router.route(settings.URL_PREFIX+'/zblock').get(getZblock); // Send a block to the node (zchain block) |