diff options
author | kaotisk <kaotisk@arching-kaos.org> | 2024-12-07 03:29:33 +0200 |
---|---|---|
committer | kaotisk <kaotisk@arching-kaos.org> | 2024-12-07 03:29:33 +0200 |
commit | 61e46fdc08170e0c630ff9983b87fde6890e3caf (patch) | |
tree | bcf762db121728b2d37d7545729c34da99b2cc24 /api/routes/getIPFSHash | |
parent | 237a32846ad4a8f8634a68f0a92c71c49807de26 (diff) | |
download | arching-kaos-tools-61e46fdc08170e0c630ff9983b87fde6890e3caf.tar.gz arching-kaos-tools-61e46fdc08170e0c630ff9983b87fde6890e3caf.tar.bz2 arching-kaos-tools-61e46fdc08170e0c630ff9983b87fde6890e3caf.zip |
New routes and fixes
Diffstat (limited to 'api/routes/getIPFSHash')
-rw-r--r-- | api/routes/getIPFSHash/index.js | 71 |
1 files changed, 71 insertions, 0 deletions
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"})); + } +} |