From 61e46fdc08170e0c630ff9983b87fde6890e3caf Mon Sep 17 00:00:00 2001 From: kaotisk Date: Sat, 7 Dec 2024 03:29:33 +0200 Subject: New routes and fixes --- api/routes/getIPFSHash/index.js | 71 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 api/routes/getIPFSHash/index.js (limited to 'api/routes/getIPFSHash') diff --git a/api/routes/getIPFSHash/index.js b/api/routes/getIPFSHash/index.js new file mode 100644 index 0000000..f412c80 --- /dev/null +++ b/api/routes/getIPFSHash/index.js @@ -0,0 +1,71 @@ +const { spawn } = require('child_process'); +const fs = require("fs"); +const config = require("../../config"); + +/* + * Returns a cached zblock + * + * Returns: + * - JSON object + * + */ +function fetchIPFShash(zblock, res) +{ + regex= /Qm[A-Za-z0-9]{44}/; + if (regex.test(zblock)){ + const path = `${config.ipfsArtifactsDir}/${zblock}`; + console.log(path) + try + { + if(fs.existsSync(path)) + { + res.writeHead(200, {'Content-Type': 'application/json'}); + res.end(JSON.stringify(JSON.parse(fs.readFileSync(path)))); + } + else + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"invalid or unreachable"})); + } + } + catch (error) + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:error.message})); + } + } + else + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"Invalid data: regexp failed to pass"})); + } +}; + +module.exports = (req, res) => { + var args = req.url.split("/"); + if ( (args[2] === 'ipfs_hash') && args[3] && typeof args[3] === "string" && args[3].length === 46 ){ + regex= /Qm[A-Za-z0-9]{44}/; + if (regex.test(args[3])) + { + if (args[3] === "QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH" ) + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"Genesis block"})); + } + else + { + fetchIPFShash(args[3],res); + } + } + else + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"Invalid data: regexp failed to pass"})); + } + } + else + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"Invalid data: no valid zblock was provided"})); + } +} -- cgit v1.2.3