Browse Source

Storage node scripts - add upload.sh and modify metadata

Leszek Wiesner 3 years ago
parent
commit
841db7295e

+ 20 - 19
storage-node-v2/scripts/create-auth-request-signature.ts

@@ -5,26 +5,27 @@ import { cryptoWaitReady } from '@polkadot/util-crypto'
 import { UploadTokenRequestBody, signTokenBody, UploadTokenRequest } from '../src/services/helpers/auth'
 import { exit } from 'process'
 
-//Wasm init
-cryptoWaitReady().then(() => {
+// Wasm init
+cryptoWaitReady()
+  .then(() => {
+    const alice = getAlicePair()
 
-  const alice = getAlicePair()
+    const tokenRequestBody: UploadTokenRequestBody = {
+      memberId: 0,
+      accountId: alice.address,
+      dataObjectId: parseInt(process.env.OBJECT_ID || '0'),
+      storageBucketId: 0,
+      bagId: 'static:council',
+    }
 
-  const tokenRequestBody: UploadTokenRequestBody = {
-    memberId: 0,
-    accountId: alice.address,
-    dataObjectId: 0,
-    storageBucketId: 0,
-    bagId: 'static:council'
-  }
-  
-  const signature = signTokenBody(tokenRequestBody, alice)
-  const tokenRequest: UploadTokenRequest = {
-    data: tokenRequestBody,
-    signature
-  }
+    const signature = signTokenBody(tokenRequestBody, alice)
+    const tokenRequest: UploadTokenRequest = {
+      data: tokenRequestBody,
+      signature,
+    }
 
-  console.log(JSON.stringify(tokenRequest))
+    console.log(JSON.stringify(tokenRequest))
 
-  exit(0)
-})
+    exit(0)
+  })
+  .catch(console.error)

+ 11 - 10
storage-node-v2/scripts/run-all-commands.sh

@@ -24,24 +24,25 @@ BUCKET_ID=`${CLI} leader:create-bucket -i=0 --dev` # bucketId = 0
 ${CLI} operator:accept-invitation -w=0 -i=${BUCKET_ID} --dev
 ${CLI} leader:set-bucket-limits -i=${BUCKET_ID} -o=100 -s=10000000 --dev
 ${CLI} leader:update-bucket-status -i=${BUCKET_ID} --set on --dev
-${CLI} leader:update-bag -a=${BUCKET_ID} -i static:council --dev 
-${CLI} operator:set-metadata -w=0 -i=${BUCKET_ID} -m=http://google.com --dev
+${CLI} leader:update-bag -a=${BUCKET_ID} -i static:council --dev
+# Sets metadata endpoint to http://localhost:3333
+${CLI} operator:set-metadata -w=0 -i=${BUCKET_ID} -m="0x0A1C687474703A2F2F6C6F63616C686F73743A333333332F6170692F7631" --dev
 
 # Create and delete a bucket
 BUCKET_ID=`${CLI} leader:create-bucket -a -n=100 -s=10000000  --dev` # bucketId = 1
-${CLI} leader:delete-bucket -i=${BUCKET_ID}  --dev 
+${CLI} leader:delete-bucket -i=${BUCKET_ID}  --dev
 
 # Create a bucket, invite operator, cancel invite, accept invitation and remove operator.
 BUCKET_ID=`${CLI} leader:create-bucket -a -n=100 -s=10000000  --dev` # bucketId = 2
-${CLI} leader:invite-operator -i=${BUCKET_ID} -w=0  --dev 
-${CLI} leader:cancel-invite -i=${BUCKET_ID} --dev 
-${CLI} leader:invite-operator -i=${BUCKET_ID} -w=0  --dev 
+${CLI} leader:invite-operator -i=${BUCKET_ID} -w=0  --dev
+${CLI} leader:cancel-invite -i=${BUCKET_ID} --dev
+${CLI} leader:invite-operator -i=${BUCKET_ID} -w=0  --dev
 ${CLI} operator:accept-invitation -i=${BUCKET_ID} -w=0 --dev
-${CLI} leader:remove-operator -i=${BUCKET_ID}   --dev 
+${CLI} leader:remove-operator -i=${BUCKET_ID}   --dev
 
 # Toggle uploading block.
-${CLI} leader:set-global-uploading-status --set on --dev 
-${CLI} leader:set-global-uploading-status --set off --dev 
+${CLI} leader:set-global-uploading-status --set on --dev
+${CLI} leader:set-global-uploading-status --set off --dev
 
 # Blacklist.
-${CLI} leader:update-blacklist -a BLACKLISTED_CID -r SOME_CID --dev
+${CLI} leader:update-blacklist -a BLACKLISTED_CID -r SOME_CID --dev

+ 57 - 0
storage-node-v2/scripts/upload.sh

@@ -0,0 +1,57 @@
+#!/usr/bin/env bash
+
+# Requires:
+# yarn storage-node dev:init
+# ./scripts/init-bucket.sh or ./scripts/run-all-commands.sh
+# yarn storage-node server --dev -w 0 -d ./uploads-dir -o 3333
+
+SCRIPT_PATH="$(dirname "${BASH_SOURCE[0]}")"
+cd $SCRIPT_PATH
+
+CLI=../bin/run
+TMP_DATA_DIR=~/tmp
+
+# Prepare data objects (random images of increasing size)
+for OBJECT_ID in {0..2}
+do
+FILE_PATH="$TMP_DATA_DIR/$OBJECT_ID.png"
+IMAGE_XY_LEN=$(( 200*(OBJECT_ID+1) ))
+head -c "$((3*IMAGE_XY_LEN**2))" /dev/urandom | convert -depth 8 -size "${IMAGE_XY_LEN}x${IMAGE_XY_LEN}" RGB:- $FILE_PATH
+HASH=$(${CLI} dev:multihash -f "$FILE_PATH")
+yarn storage-node dev:upload -s $(stat -c %s $FILE_PATH) -c "$HASH"
+done
+
+# Upload data objects
+for OBJECT_ID in {0..2}
+do
+export OBJECT_ID
+FILE_PATH="$TMP_DATA_DIR/$OBJECT_ID.png"
+SIGNATURE=$(yarn ts-node ./scripts/create-auth-request-signature.ts | sed -n 3p | jq -r .signature)
+echo "object id: $OBJECT_ID"
+echo "file path: $FILE_PATH"
+echo "signature: $SIGNATURE"
+TOKEN=$(curl -X 'POST' \
+  'http://localhost:3333/api/v1/authToken' \
+  -H 'accept: application/json' \
+  -H 'Content-Type: application/json' \
+  -d "{
+  \"data\": {
+    \"memberId\": 0,
+    \"accountId\": \"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",
+    \"dataObjectId\": $OBJECT_ID,
+    \"storageBucketId\": 0,
+    \"bagId\": \"static:council\"
+  },
+  \"signature\": \"$SIGNATURE\"
+}" | jq -r .token)
+
+curl -X 'POST' \
+  'http://localhost:3333/api/v1/files' \
+  -H 'accept: application/json' \
+  -H "x-api-key: $TOKEN" \
+  -H 'Content-Type: multipart/form-data' \
+  -F "file=@$FILE_PATH;type=video/mp4" \
+  -F "dataObjectId=$OBJECT_ID" \
+  -F 'storageBucketId=0' \
+  -F 'bagId=static:council'
+done