aboutsummaryrefslogtreecommitdiff
path: root/api/routes/getIPFSHash
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2024-12-07 03:29:33 +0200
committerkaotisk <kaotisk@arching-kaos.org>2024-12-07 03:29:33 +0200
commit61e46fdc08170e0c630ff9983b87fde6890e3caf (patch)
treebcf762db121728b2d37d7545729c34da99b2cc24 /api/routes/getIPFSHash
parent237a32846ad4a8f8634a68f0a92c71c49807de26 (diff)
downloadarching-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.js71
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"}));
+ }
+}