summaryrefslogtreecommitdiff
path: root/old/dump.sh
diff options
context:
space:
mode:
Diffstat (limited to 'old/dump.sh')
-rwxr-xr-xold/dump.sh58
1 files changed, 58 insertions, 0 deletions
diff --git a/old/dump.sh b/old/dump.sh
new file mode 100755
index 0000000..bc50cfb
--- /dev/null
+++ b/old/dump.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+if [ -z $CANKEY ]
+then
+ echo Provide an API key in the environment variable CANKEY.
+ return 1
+fi
+if ! [ -d dump ]
+then
+ mkdir dump
+fi
+cd dump
+base=https://sdccd.instructure.com/api/v1/
+process_json()
+{
+ jq -M
+}
+get()
+{
+ url=$base$1
+ curl -s -X GET "$url" -H "Authorization: Bearer $CANKEY" | jq -M
+}
+
+get users/self/folders > folders
+get users/self/files > files
+
+get_id()
+{
+ < folders sed -e 's/,.*//g' -e 's/.*://g'
+}
+get_name()
+{
+ < folders grep id.:$1 | sed -e 's/.*name":"//' -e 's/",.*//'
+}
+
+# Recursively resolve directories and files.
+# Empty response: []
+get_dir()
+{
+ id=$1
+ name=$2
+ echo $id
+ mkdir $id
+ cd $id
+ echo $name > name
+ get folders/$id/files > files
+ get folders/$id/folders > folders
+ for i in $(get_id)
+ do
+ get_dir $i "$(get_name $i)"
+ done
+ cd ..
+}
+
+for i in $(get_id)
+do
+ get_dir $i
+done