Sample code for 30+ languages & platforms
Visual FoxPro

Download Object from Google Cloud Storage

See more Google Cloud Storage Examples

Demonstrates how to download an object from Google Cloud Storage to a file.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loSbToken
LOCAL loHttp
LOCAL lcUrl
LOCAL loFileData
LOCAL loSbErrorResponse
LOCAL lnResponseCode

lnSuccess = 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..
loSbToken = CreateObject('Chilkat.StringBuilder')
loSbToken.LoadFile("qa_data/tokens/googleCloudStorageAccessToken.txt","utf-8")

* Send a GET equivalent to this curl command.

* curl -X GET \
*     -H "Authorization: Bearer [OAUTH2_TOKEN]" \
*     -o "[SAVE_TO_LOCATION]" \
*     "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/o/[OBJECT_NAME]?alt=media"

loHttp = CreateObject('Chilkat.Http')

loHttp.AuthToken = loSbToken.GetAsString()

* Construct a URL to download an object named "starfish.jpg" from the "chilkat-ocean" bucket.
loHttp.SetUrlVar("bucket_name","chilkat-ocean")
loHttp.SetUrlVar("object_name","starfish.jpg")
lcUrl = "https://www.googleapis.com/storage/v1/b/{$bucket_name}/o/{$object_name}?alt=media"

* If there is an error response, then we didn't actually download the file data,
* but instead we downloaded an error response..
loFileData = CreateObject('Chilkat.BinData')
lnSuccess = loHttp.DownloadBd(lcUrl,loFileData)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loSbToken
    RELEASE loHttp
    RELEASE loFileData
    CANCEL
ENDIF

loSbErrorResponse = CreateObject('Chilkat.StringBuilder')
lnResponseCode = loHttp.LastStatus
IF (lnResponseCode = 401) THEN
    ? "If invalid credentials, then it is likely the access token expired."
    ? "Your app should automatically fetch a new access token and re-try."
ENDIF

IF (lnResponseCode <> 200) THEN
    * Get the error response
    loSbErrorResponse.AppendBd(loFileData,"utf-8",0,0)
    ? "Error response code = " + STR(lnResponseCode)
    ? "Error:"
    ? loSbErrorResponse.GetAsString()
    RELEASE loSbToken
    RELEASE loHttp
    RELEASE loFileData
    RELEASE loSbErrorResponse
    CANCEL
ENDIF

? "Success."

* Save the downloaded data to a file.
lnSuccess = loFileData.WriteFile("qa_output/starfish.jpg")

RELEASE loSbToken
RELEASE loHttp
RELEASE loFileData
RELEASE loSbErrorResponse