blob-store.sh

 1function upload_to_blob_store_with_acl
 2{
 3    bucket_name="$1"
 4    file_to_upload="$2"
 5    blob_store_key="$3"
 6    acl="$4"
 7
 8    date=$(date +"%a, %d %b %Y %T %z")
 9    acl="x-amz-acl:public-read"
10    content_type="application/octet-stream"
11    storage_type="x-amz-storage-class:STANDARD"
12    string="PUT\n\n${content_type}\n${date}\n${acl}\n${storage_type}\n/${bucket_name}/${blob_store_key}"
13    signature=$(echo -en "${string}" | openssl sha1 -hmac "${DIGITALOCEAN_SPACES_SECRET_KEY}" -binary | base64)
14
15    curl --fail -vv -s -X PUT -T "$file_to_upload" \
16        -H "Host: ${bucket_name}.nyc3.digitaloceanspaces.com" \
17        -H "Date: $date" \
18        -H "Content-Type: $content_type" \
19        -H "$storage_type" \
20        -H "$acl" \
21        -H "Authorization: AWS ${DIGITALOCEAN_SPACES_ACCESS_KEY}:$signature" \
22        "https://${bucket_name}.nyc3.digitaloceanspaces.com/${blob_store_key}"
23}
24
25function upload_to_blob_store_public
26{
27    upload_to_blob_store_with_acl "$1" "$2" "$3" "x-amz-acl:public-read"
28}
29
30function upload_to_blob_store
31{
32    upload_to_blob_store_with_acl "$1" "$2" "$3" "x-amz-acl:private"
33}