Visual FoxPro
Visual FoxPro
Manage Bucket Storage Class
See more Google Cloud Storage Examples
Demonstrates how to manage a bucket's default storage class.See Cloud Storage Classes for information about storage classes.
Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loSbToken
LOCAL loJson
LOCAL loHttp
LOCAL lcUrl
LOCAL loResp
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")
* ---- Step 1
* Create the JSON body of the PUT request that will be sent.
* {
* "storageClass": "[STORAGE_CLASS]"
* }
*
loJson = CreateObject('Chilkat.JsonObject')
* Be careful if using the "regional" storage class. See the note below about the 400 error response.
loJson.UpdateString("storageClass","nearline")
* ---- Step 2
* Send a PUT equivalent to this curl command
* curl -X PUT --data-binary @[JSON_FILE_NAME].json \
* -H "Authorization: Bearer [OAUTH2_TOKEN]" \
* -H "Content-Type: application/json" \
* "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=storageClass"
loHttp = CreateObject('Chilkat.Http')
loHttp.AuthToken = loSbToken.GetAsString()
loHttp.SetUrlVar("bucket_name","chilkat-ocean")
lcUrl = "https://www.googleapis.com/storage/v1/b/{$bucket_name}?fields=storageClass"
loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpJson("PUT",lcUrl,loJson,"application/json",loResp)
IF (lnSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loSbToken
RELEASE loJson
RELEASE loHttp
RELEASE loResp
CANCEL
ENDIF
lnResponseCode = loResp.StatusCode
IF (lnResponseCode = 401) THEN
? loResp.BodyStr
? "If invalid credentials, then it is likely the access token expired."
? "Your app should automatically fetch a new access token and re-try."
RELEASE loSbToken
RELEASE loJson
RELEASE loHttp
RELEASE loResp
CANCEL
ENDIF
* On my first try at running this code, I received the following error response:
* Response code: 400
* Response body
* {
* "error": {
* "errors": [
* {
* "domain": "global",
* "reason": "invalid",
* "message": "The combination of locationConstraint and storageClass you provided is not supported for your project"
* }
* ],
* "code": 400,
* "message": "The combination of locationConstraint and storageClass you provided is not supported for your project"
* }
* }
*
* This was because my storage location was a Multi-regional location, and I tried to assign the "regional" storage class,
* which is not allowed.
? "Response code: " + STR(lnResponseCode)
? "Response body"
? loResp.BodyStr
* A response code = 200 indicates success, and the response body contains the JSON
*
* Response code: 200
* Response body
* {
* "storageClass": "NEARLINE"
* }
*
RELEASE loSbToken
RELEASE loJson
RELEASE loHttp
RELEASE loResp