Tcl Google Cloud Storage: List Buckets

Back to Index

Retrieves a list of buckets for a given project.

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

CURL Command

curl -X GET https://www.googleapis.com/storage/v1/b \
    --header "Authorization: Bearer CLOUD_STORAGE_TOKEN" \
    --data "project=MY_CLOUD_STORAGE_PROJECT"

Tcl Example


load ./chilkat.dll

set rest [new_CkRest]

#  URL: https://www.googleapis.com/storage/v1/b
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
}

CkRest_AddQueryParam $rest "project" "MY_CLOUD_STORAGE_PROJECT"

CkRest_AddHeader $rest "Authorization" "Bearer CLOUD_STORAGE_TOKEN"

set sbResponseBody [new_CkStringBuilder]

set success [CkRest_FullRequestNoBodySb $rest "GET" "/storage/v1/b" $sbResponseBody]
if {[expr $success != 1]} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    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_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 i 0
set count_i [CkJsonObject_SizeOfArray $jsonResponse "items"]
while {[expr $i < $count_i]} {
    CkJsonObject_put_I $jsonResponse $i
    set kind [CkJsonObject_stringOf $jsonResponse "items[i].kind"]
    set id [CkJsonObject_stringOf $jsonResponse "items[i].id"]
    set selfLink [CkJsonObject_stringOf $jsonResponse "items[i].selfLink"]
    set projectNumber [CkJsonObject_stringOf $jsonResponse "items[i].projectNumber"]
    set name [CkJsonObject_stringOf $jsonResponse "items[i].name"]
    set timeCreated [CkJsonObject_stringOf $jsonResponse "items[i].timeCreated"]
    set updated [CkJsonObject_stringOf $jsonResponse "items[i].updated"]
    set metageneration [CkJsonObject_stringOf $jsonResponse "items[i].metageneration"]
    set location [CkJsonObject_stringOf $jsonResponse "items[i].location"]
    set storageClass [CkJsonObject_stringOf $jsonResponse "items[i].storageClass"]
    set etag [CkJsonObject_stringOf $jsonResponse "items[i].etag"]
    set i [expr $i + 1]
}

delete_CkRest $rest
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jsonResponse

Sample JSON Response Body

{
  "kind": "storage#buckets",
  "items": [
    {
      "kind": "storage#bucket",
      "id": "chilkat-bucket",
      "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-bucket",
      "projectNumber": "5332332985",
      "name": "chilkat-bucket",
      "timeCreated": "2018-10-23T00:04:44.507Z",
      "updated": "2018-10-23T00:04:44.507Z",
      "metageneration": "1",
      "location": "US",
      "storageClass": "MULTI_REGIONAL",
      "etag": "CAE="
    },
    {
      "kind": "storage#bucket",
      "id": "chilkat-images",
      "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-images",
      "projectNumber": "5332332985",
      "name": "chilkat-images",
      "timeCreated": "2018-10-23T11:24:43.000Z",
      "updated": "2018-10-23T11:24:43.000Z",
      "metageneration": "1",
      "location": "US",
      "storageClass": "MULTI_REGIONAL",
      "etag": "CAE="
    }
  ]
}