Tcl Google Cloud Storage: Create Bucket

Back to Index

Creates a new bucket.

Documentation: https://cloud.google.com/storage/docs/json_api/v1/buckets/insert

CURL Command

curl -X POST https://www.googleapis.com/storage/v1/b?project=MY_CLOUD_STORAGE_PROJECT \
    --header "Authorization: Bearer CLOUD_STORAGE_TOKEN" \
    --header "Content-Type: application/json" \
    --data '{"name": "chilkat-test-bucket"}'

Tcl Example


load ./chilkat.dll

set rest [new_CkRest]

#  URL: https://www.googleapis.com/storage/v1/b?project=MY_CLOUD_STORAGE_PROJECT
set bTls 1
set port 443
set bAutoReconnect 1
set success [CkRest_Connect $rest "www.googleapis.com" $port $bTls $bAutoReconnect]
if {[expr $success != 1]} then {
    puts "ConnectFailReason: [CkRest_get_ConnectFailReason $rest]"
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    exit
}

#  See the Online Tool for Generating JSON Creation Code
set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "name" "chilkat-test-bucket"

CkRest_AddHeader $rest "Authorization" "Bearer CLOUD_STORAGE_TOKEN"
CkRest_AddHeader $rest "Content-Type" "application/json"

set sbRequestBody [new_CkStringBuilder]

CkJsonObject_EmitSb $json $sbRequestBody
set sbResponseBody [new_CkStringBuilder]

set success [CkRest_FullRequestSb $rest "POST" "/storage/v1/b?project=MY_CLOUD_STORAGE_PROJECT" $sbRequestBody $sbResponseBody]
if {[expr $success != 1]} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkJsonObject $json
    delete_CkStringBuilder $sbRequestBody
    delete_CkStringBuilder $sbResponseBody
    exit
}

set respStatusCode [CkRest_get_ResponseStatusCode $rest]
if {[expr $respStatusCode >= 400]} then {
    puts "Response Status Code = $respStatusCode"
    puts "Response Header:"
    puts [CkRest_responseHeader $rest]
    puts "Response Body:"
    puts [CkStringBuilder_getAsString $sbResponseBody]
    delete_CkRest $rest
    delete_CkJsonObject $json
    delete_CkStringBuilder $sbRequestBody
    delete_CkStringBuilder $sbResponseBody
    exit
}

set jsonResponse [new_CkJsonObject]

CkJsonObject_LoadSb $jsonResponse $sbResponseBody

#  See the Online Tool for Generating JSON Parse Code

set kind [CkJsonObject_stringOf $jsonResponse "kind"]
set id [CkJsonObject_stringOf $jsonResponse "id"]
set selfLink [CkJsonObject_stringOf $jsonResponse "selfLink"]
set projectNumber [CkJsonObject_stringOf $jsonResponse "projectNumber"]
set name [CkJsonObject_stringOf $jsonResponse "name"]
set timeCreated [CkJsonObject_stringOf $jsonResponse "timeCreated"]
set updated [CkJsonObject_stringOf $jsonResponse "updated"]
set metageneration [CkJsonObject_stringOf $jsonResponse "metageneration"]
set location [CkJsonObject_stringOf $jsonResponse "location"]
set storageClass [CkJsonObject_stringOf $jsonResponse "storageClass"]
set etag [CkJsonObject_stringOf $jsonResponse "etag"]

delete_CkRest $rest
delete_CkJsonObject $json
delete_CkStringBuilder $sbRequestBody
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jsonResponse

Sample JSON Response Body

{
  "kind": "storage#bucket",
  "id": "chilkat-test-bucket",
  "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-test-bucket",
  "projectNumber": "5332332985",
  "name": "chilkat-test-bucket",
  "timeCreated": "2018-10-23T11:52:52.464Z",
  "updated": "2018-10-23T11:52:52.464Z",
  "metageneration": "1",
  "location": "US",
  "storageClass": "STANDARD",
  "etag": "CAE="
}