Sample code for 30+ languages & platforms
Tcl

Google Cloud Storage: Update Object Metadata

See more Google Cloud Storage Examples

Demonstrates how to update (edit) the metadata associated with an object in a Google Cloud Storage bucket.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

set http [new_CkHttp]

# Implements the following CURL command:

# curl -X PATCH --data-binary @JSON_FILE_NAME \
#   -H "Authorization: Bearer OAUTH2_TOKEN" \
#   -H "Content-Type: application/json" \
#   "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"

# Use the following online tool to generate HTTP code from a CURL command
# Convert a cURL Command to HTTP Source Code

set bdRequestBody [new_CkBinData]

set success [CkBinData_LoadFile $bdRequestBody "JSON_FILE_PATH"]
if {$success != 1} then {
    puts "Failed to load JSON_FILE_PATH"
    delete_CkHttp $http
    delete_CkBinData $bdRequestBody
    exit
}

# Adds the "Authorization: Bearer OAUTH2_TOKEN" header.
CkHttp_put_AuthToken $http "OAUTH2_TOKEN"

set resp [new_CkHttpResponse]

set success [CkHttp_HttpBd $http "PATCH" "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME" $bdRequestBody "application/json" $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkBinData $bdRequestBody
    delete_CkHttpResponse $resp
    exit
}

set sbResponseBody [new_CkStringBuilder]

CkHttpResponse_GetBodySb $resp $sbResponseBody

set jResp [new_CkJsonObject]

CkJsonObject_LoadSb $jResp $sbResponseBody
CkJsonObject_put_EmitCompact $jResp 0

puts "Response Body:"
puts [CkJsonObject_emit $jResp]

set respStatusCode [CkHttpResponse_get_StatusCode $resp]
puts "Response Status Code = $respStatusCode"
if {$respStatusCode >= 400} then {
    puts "Response Header:"
    puts [CkHttpResponse_header $resp]
    puts "Failed."
    delete_CkHttp $http
    delete_CkBinData $bdRequestBody
    delete_CkHttpResponse $resp
    delete_CkStringBuilder $sbResponseBody
    delete_CkJsonObject $jResp
    exit
}


delete_CkHttp $http
delete_CkBinData $bdRequestBody
delete_CkHttpResponse $resp
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jResp