#!/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