aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2023-04-03 08:22:39 +0300
committerkaotisk <kaotisk@arching-kaos.org>2023-04-03 08:22:39 +0300
commit2f11539eef545fc0a9761693ae55e837b460beac (patch)
tree566e38f9aee9f0ffc3bc68877ed20767182492c7
parent05ea0e3dca7209d1490658014c5e598e4d4dfdc4 (diff)
downloadarching-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.js35
-rw-r--r--api/routes/index.js3
-rwxr-xr-xbin/ak-zblock-cache11
-rwxr-xr-xbin/ak-zblock-show25
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"