Sample code for 30+ languages & platforms
Xbase++

Google Cloud Storage List Bucket Objects

See more Google Cloud Storage Examples

List the objects in a Google Cloud Storage bucket.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oSbToken
LOCAL oHttp
LOCAL oResp
LOCAL nResponseCode
LOCAL oJson
LOCAL cId
LOCAL cSelfLink
LOCAL cMediaLink
LOCAL cName
LOCAL cBucket
LOCAL cGeneration
LOCAL cMetageneration
LOCAL cContentType
LOCAL cStorageClass
LOCAL cSize
LOCAL cMd5Hash
LOCAL cCrc32c
LOCAL cEtag
LOCAL cTimeCreated
LOCAL cUpdated
LOCAL cTimeStorageClassUpdated
LOCAL cKind
LOCAL i
LOCAL nCount_i

nSuccess := 0

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

//  This example uses a previously obtained access token having permission for the 
//  scope "https://www.googleapis.com/auth/cloud-platform"

//  In this example, Get Google Cloud Storage OAuth2 Access Token, 
//  the service account access token was saved to a text file.  This example fetches the access token from the file..
oSbToken := CreateObject("Chilkat.StringBuilder")
oSbToken:LoadFile("qa_data/tokens/googleCloudStorageAccessToken.txt", "utf-8")

oHttp := CreateObject("Chilkat.Http")
oHttp:AuthToken := oSbToken:GetAsString()

//  For more info see Cloud Storage Documentation - Objects: list 
//  
nSuccess := oHttp:SetUrlVar("bucket", "chilkat-ocean")
nSuccess := oHttp:SetUrlVar("PROJECT_NAME", "ChilkatCloud")

oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpNoBody("GET", "https://www.googleapis.com/storage/v1/b/{$bucket}/o?project={$ChilkatCloud}", oResp)
IF (nSuccess == 0)
    ? oHttp:LastErrorText
    oSbToken:destroy()
    oHttp:destroy()
    oResp:destroy()
    RETURN
ENDIF

nResponseCode := oResp:StatusCode
IF (nResponseCode == 401)
    ? oResp:BodyStr
    ? "If invalid credentials, then it is likely the access token expired."
    ? "Your app should automatically fetch a new access token and re-try."
    oSbToken:destroy()
    oHttp:destroy()
    oResp:destroy()
    RETURN
ENDIF

? "Response code: " + Str(nResponseCode)
? "Response body"

oJson := CreateObject("Chilkat.JsonObject")
nSuccess := oJson:Load(oResp:BodyStr)

oJson:EmitCompact := 0

? oJson:Emit()

//  A response code = 200 indicates success, and the response body contains JSON such as this:

//  {
//    "kind": "storage#objects",
//    "items": [
//      {
//        "kind": "storage#object",
//        "id": "chilkat-ocean/file with space char.jpg/1555776690752366",
//        "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-ocean/o/file%20with%20space%20char.jpg",
//        "mediaLink": "https://www.googleapis.com/download/storage/v1/b/chilkat-ocean/o/file%20with%20space%20char.jpg?generation=1555776690752366&alt=media",
//        "name": "file with space char.jpg",
//        "bucket": "chilkat-ocean",
//        "generation": "1555776690752366",
//        "metageneration": "1",
//        "contentType": "image/jpeg",
//        "storageClass": "MULTI_REGIONAL",
//        "size": "6229",
//        "md5Hash": "LpxZ2/JmI2fcl9/dqF2gSA==",
//        "crc32c": "9RjgwQ==",
//        "etag": "CO6WguiH3+ECEAE=",
//        "timeCreated": "2019-04-20T16:11:30.752Z",
//        "updated": "2019-04-20T16:11:30.752Z",
//        "timeStorageClassUpdated": "2019-04-20T16:11:30.752Z"
//      },
//      {
//        "kind": "storage#object",
//  
//        "id": "chilkat-ocean/penguins.jpg/1555775749593296",
//        "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-ocean/o/penguins.jpg",
//        "mediaLink": "https://www.googleapis.com/download/storage/v1/b/chilkat-ocean/o/penguins.jpg?generation=1555775749593296&alt=media",
//        "name": "penguins.jpg",
//        "bucket": "chilkat-ocean",
//        "generation": "1555775749593296",
//        "metageneration": "1",
//        "contentType": "image/jpeg",
//        "storageClass": "MULTI_REGIONAL",
//        "size": "777835",
//        "md5Hash": "nTd7EM53jEk4s8fixjoimg==",
//        "crc32c": "ixxYVw==",
//        "etag": "CNCxnqeE3+ECEAE=",
//        "timeCreated": "2019-04-20T15:55:49.593Z",
//        "updated": "2019-04-20T15:55:49.593Z",
//        "timeStorageClassUpdated": "2019-04-20T15:55:49.593Z"
//      },
//      {
//        "kind": "storage#object",
//        "id": "chilkat-ocean/starfish.jpg/1628958192639968",
//        "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-ocean/o/starfish.jpg",
//        "mediaLink": "https://www.googleapis.com/download/storage/v1/b/chilkat-ocean/o/starfish.jpg?generation=1628958192639968&alt=media",
//        "name": "starfish.jpg",
//        "bucket": "chilkat-ocean",
//        "generation": "1628958192639968",
//        "metageneration": "1",
//        "contentType": "image/jpeg",
//        "storageClass": "MULTI_REGIONAL",
//        "size": "6229",
//        "md5Hash": "LpxZ2/JmI2fcl9/dqF2gSA==",
//        "crc32c": "9RjgwQ==",
//        "etag": "COC/tJP2sPICEAE=",
//        "timeCreated": "2021-08-14T16:23:12.660Z",
//        "updated": "2021-08-14T16:23:12.660Z",
//        "timeStorageClassUpdated": "2021-08-14T16:23:12.660Z"
//      }
//    ]
//  }

//  Use this online tool to generate parsing code from sample JSON: 
//  Generate Parsing Code from JSON

cKind := oJson:StringOf("kind")
i := 0
nCount_i := oJson:SizeOfArray("items")
DO WHILE i < nCount_i
    oJson:I := i
    cKind := oJson:StringOf("items[i].kind")
    cId := oJson:StringOf("items[i].id")
    cSelfLink := oJson:StringOf("items[i].selfLink")
    cMediaLink := oJson:StringOf("items[i].mediaLink")
    cName := oJson:StringOf("items[i].name")
    cBucket := oJson:StringOf("items[i].bucket")
    cGeneration := oJson:StringOf("items[i].generation")
    cMetageneration := oJson:StringOf("items[i].metageneration")
    cContentType := oJson:StringOf("items[i].contentType")
    cStorageClass := oJson:StringOf("items[i].storageClass")
    cSize := oJson:StringOf("items[i].size")
    cMd5Hash := oJson:StringOf("items[i].md5Hash")
    cCrc32c := oJson:StringOf("items[i].crc32c")
    cEtag := oJson:StringOf("items[i].etag")
    cTimeCreated := oJson:StringOf("items[i].timeCreated")
    cUpdated := oJson:StringOf("items[i].updated")
    cTimeStorageClassUpdated := oJson:StringOf("items[i].timeStorageClassUpdated")
    i := i + 1
ENDDO

oSbToken:destroy()
oHttp:destroy()
oResp:destroy()
oJson:destroy()