aboutsummaryrefslogtreecommitdiff
path: root/api/routes/getMrk/index.js
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2023-08-19 23:27:38 +0300
committerkaotisk <kaotisk@arching-kaos.org>2023-08-19 23:27:38 +0300
commit5f7fb5e7a9caaf6f5fe4d994e07bef367d41efd4 (patch)
tree0b3899dc58f4368d4fd9a609153ff5338c70c676 /api/routes/getMrk/index.js
parent3855b9b657568f2270d63eae157923cc119fa866 (diff)
downloadarching-kaos-tools-5f7fb5e7a9caaf6f5fe4d994e07bef367d41efd4.tar.gz
arching-kaos-tools-5f7fb5e7a9caaf6f5fe4d994e07bef367d41efd4.tar.bz2
arching-kaos-tools-5f7fb5e7a9caaf6f5fe4d994e07bef367d41efd4.zip
Added routes to merkle leafs and file chunks
Diffstat (limited to 'api/routes/getMrk/index.js')
-rw-r--r--api/routes/getMrk/index.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/api/routes/getMrk/index.js b/api/routes/getMrk/index.js
new file mode 100644
index 0000000..7e48e1d
--- /dev/null
+++ b/api/routes/getMrk/index.js
@@ -0,0 +1,61 @@
+const { spawn } = require('child_process');
+const fs = require("fs");
+const config = require("../../config");
+
+/*
+ * Gets a local merkle leaf
+ *
+ * Returns:
+ * the merkle leaf
+ *
+ */
+function fetchFmrk(mrk, res){
+ const command = spawn("cat",[config.workDir+"/fmrk/"+mrk]);
+ command.stdout.on("data", data => {
+ });
+
+ command.stderr.on("data", data => {
+ console.log(`stderr: ${data}`);
+ });
+
+ command.on('error', (error) => {
+ console.log(`error: ${error.message}`);
+ });
+
+ command.on("close", code => {
+ console.log(`child process exited with code ${code}`);
+
+ if ( code === 0 ) {
+ const path = config.workDir+"/fmrk/"+mrk;
+ console.log(path)
+ try {
+ if(fs.existsSync(path)){
+ res.send(fs.readFileSync(path));
+ }
+ } catch (error) {
+ res.send({"error":error.message});
+ }
+ } else if ( code === 2){
+ res.send({"error":"The roof is on fire"});
+ } else {
+ res.send({"error":"invalid or unreachable"});
+ }
+ });
+};
+module.exports = (req, res) => {
+ console.log(req.params)
+ if ( (req.params.mrk) && req.params.mrk.length === 128 ){
+ regex= /[a-f0-9]{128}/;
+ if (regex.test(req.params.mrk)){
+ if (req.params.mrk === "QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH" ){
+ res.send({error:"Genesis block"});
+ } else {
+ fetchFmrk(req.params.mrk,res);
+ }
+ } else {
+ res.send({error:"Invalid data: regexp failed to pass"});
+ }
+ } else {
+ res.send({error:"Invalid data: no valid zblock was provided"});
+ }
+}