diff options
author | kaotisk <kaotisk@arching-kaos.org> | 2023-08-19 23:27:38 +0300 |
---|---|---|
committer | kaotisk <kaotisk@arching-kaos.org> | 2023-08-19 23:27:38 +0300 |
commit | 5f7fb5e7a9caaf6f5fe4d994e07bef367d41efd4 (patch) | |
tree | 0b3899dc58f4368d4fd9a609153ff5338c70c676 /api/routes | |
parent | 3855b9b657568f2270d63eae157923cc119fa866 (diff) | |
download | arching-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')
-rw-r--r-- | api/routes/getMrk/index.js | 61 | ||||
-rw-r--r-- | api/routes/getTr/index.js | 61 | ||||
-rw-r--r-- | api/routes/index.js | 6 |
3 files changed, 128 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"}); + } +} diff --git a/api/routes/getTr/index.js b/api/routes/getTr/index.js new file mode 100644 index 0000000..c3c058f --- /dev/null +++ b/api/routes/getTr/index.js @@ -0,0 +1,61 @@ +const { spawn } = require('child_process'); +const fs = require("fs"); +const config = require("../../config"); + +/* + * Gets a file chunk + * + * Returns: + * the chunk + * + */ +function fetchFtr(tr, res){ + const command = spawn("cat",[config.workDir+"/ftr/"+tr]); + 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+"/ftr/"+tr; + 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.tr) && req.params.tr.length === 128 ){ + regex= /[a-f0-9]{128}/; + if (regex.test(req.params.tr)){ + if (req.params.tr === "QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH" ){ + res.send({error:"Genesis block"}); + } else { + fetchFtr(req.params.tr,res); + } + } else { + res.send({error:"Invalid data: regexp failed to pass"}); + } + } else { + res.send({error:"Invalid data: no valid zblock was provided"}); + } +} diff --git a/api/routes/index.js b/api/routes/index.js index e697be7..3a2e413 100644 --- a/api/routes/index.js +++ b/api/routes/index.js @@ -11,6 +11,8 @@ const getZChain = require('./getZChain'); const receiveZBlock = require('./receiveZBlock'); const receiveZChain = require('./receiveZChain'); const getZblock = require('./getZblock'); +const getMrk = require('./getMrk'); +const getTr = require('./getTr'); const getAkid = require('./getAkid'); const getInnerIPFSContent = require('./getInnerIPFSContent'); const corsOptions = { @@ -43,6 +45,10 @@ router.route(settings.URL_PREFIX+'/akid').get(getAkid); router.route(settings.URL_PREFIX+'/content').get(getInnerIPFSContent); // Returns zblock router.route(settings.URL_PREFIX+'/zblock/:zblock').get(getZblock); +// Returns a mrk +router.route(settings.URL_PREFIX+'/mrk/:mrk').get(getMrk); +// Returns a tr +router.route(settings.URL_PREFIX+'/tr/:tr').get(getTr); // Send a block to the node (zchain block) router.route(settings.URL_PREFIX+'/sblk').post(receiveZBlock); // Send a zchain link to the node (refering to a valid zchain out there) |