diff options
author | kaotisk <kaotisk@arching-kaos.org> | 2023-04-03 08:22:39 +0300 |
---|---|---|
committer | kaotisk <kaotisk@arching-kaos.org> | 2023-04-03 08:22:39 +0300 |
commit | 2f11539eef545fc0a9761693ae55e837b460beac (patch) | |
tree | 566e38f9aee9f0ffc3bc68877ed20767182492c7 | |
parent | 05ea0e3dca7209d1490658014c5e598e4d4dfdc4 (diff) | |
download | arching-kaos-tools-2f11539eef545fc0a9761693ae55e837b460beac.tar.gz arching-kaos-tools-2f11539eef545fc0a9761693ae55e837b460beac.tar.bz2 arching-kaos-tools-2f11539eef545fc0a9761693ae55e837b460beac.zip |
Added ak-zblock-show with appropriate route in API with caching feature
-rw-r--r-- | api/routes/getZblock/index.js | 35 | ||||
-rw-r--r-- | api/routes/index.js | 3 | ||||
-rwxr-xr-x | bin/ak-zblock-cache | 11 | ||||
-rwxr-xr-x | bin/ak-zblock-show | 25 |
4 files changed, 53 insertions, 21 deletions
diff --git a/api/routes/getZblock/index.js b/api/routes/getZblock/index.js new file mode 100644 index 0000000..af14ae3 --- /dev/null +++ b/api/routes/getZblock/index.js @@ -0,0 +1,35 @@ +const { spawn } = require('child_process'); +const fs = require("fs"); +const config = require("../../config"); + +/* + * Gets the local latest zblock + * + * Returns: + * - JSON object + * { zlatest: "Qm..." } + * + */ +module.exports = (req, res) => { + const command = spawn("ak-zblock-cache",[req.query.zblock]); + 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 ) { + res.send(JSON.parse(fs.readFileSync(config.zblockDir+"/"+req.query.zblock))); + } else { + res.send({"error":"error"}); + } + }); +}; diff --git a/api/routes/index.js b/api/routes/index.js index b771758..5842757 100644 --- a/api/routes/index.js +++ b/api/routes/index.js @@ -10,6 +10,7 @@ const getSBlock = require('./getSBlock'); const getZChain = require('./getZChain'); const receiveZBlock = require('./receiveZBlock'); const receiveZChain = require('./receiveZChain'); +const getZblock = require('./getZblock'); const corsOptions = { origin: '*', optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 @@ -34,6 +35,8 @@ router.route(settings.URL_PREFIX+'/sblock').get(getSBlock); router.route(settings.URL_PREFIX+'/zchain').get(getZChain); // Returns latest zblock from node's local chain router.route(settings.URL_PREFIX+'/zlatest').get(getZLatest); +// Returns zblock +router.route(settings.URL_PREFIX+'/zblock').get(getZblock); // 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) diff --git a/bin/ak-zblock-cache b/bin/ak-zblock-cache new file mode 100755 index 0000000..6551796 --- /dev/null +++ b/bin/ak-zblock-cache @@ -0,0 +1,11 @@ +#!/bin/bash + +if [ ! -z "$1" ] +then + ak-zblock-show "$1" > $AK_ZBLOCKDIR/$1 + exit 0 +else + echo not ok + exit 1 +fi + diff --git a/bin/ak-zblock-show b/bin/ak-zblock-show index 886490b..7ef9b42 100755 --- a/bin/ak-zblock-show +++ b/bin/ak-zblock-show @@ -1,17 +1,6 @@ #!/bin/bash -# ak-enter -# -# Using this tool, we can seek a whole zchain, if available from -# an IPFS CID or an IPNS link. -# -# Default (no arguments) will retrieve the local ZCHAIN starting -# from the IPFS CID stored in the file that is tracked by the -# $AK_ZLATEST environment variable. -# -# ak-enter [-n IPNS_LINK] -# ak-enter [IPFS CID] -# ak-enter -nV -# ak-enter +# ak-zblock-show +# ak-zblock [IPFS CID] # # Returns a JSON array representing the chain retrieved. # Logs messages to $LOGSFILE. @@ -24,17 +13,11 @@ logit(){ usage(){ echo "$PROGRAM - Show a zblock" - echo "-----------------------------------" echo "" echo "$PROGRAM <zblock_hash>" echo "Usage:" echo " --help, -h Print this help and exit" } -# Start of tests -#entrance="QmW5WVXCJfhb4peHG6cbEdamC24vZzMX2Vz386vpENh38U" -#entrance="QmNjQq7GkuXGF8kFT1z2Mv3i4JhY7sBXVUmHDiR1zkQjoE" -#entrance="QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH" -# End of tests verify=1 if [ ! -z "$1" ] && [ "$1" == "-h" ] || [ "$1" == "--help" ] then @@ -112,7 +95,7 @@ counter=0 logit "[INFO]" "ZBLOCK $zblock is JSON" # Then we pass it through the filter and save it - ak-ipfs-cat $zblock | ak-json2bash > tmp-zblock + ak-ipfs-cat $zblock | jq -M | ak-json2bash > tmp-zblock # Be sure that there are the expected values # We need 'block' and 'block_signature' inside a 'zblock' @@ -148,7 +131,7 @@ counter=0 # Same as above applies to BLOCK and DATA subparts of each ZBLOCK # BLOCKS echo -n '"block":"'$block'",' - ak-ipfs-cat $block | ak-json2bash > tmp-block + ak-ipfs-cat $block | jq -M | ak-json2bash > tmp-block if [ "$?" -ne 0 ] then logit "[ERROR]" "BLOCK $block READ failed" |