DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoSbToken
Variant vJson
Handle hoJson
Handle hoHttp
String sUrl
Variant vResp
Handle hoResp
Integer iResponseCode
String sTemp1
Move False To iSuccess
// 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..
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbToken
If (Not(IsComObjectCreated(hoSbToken))) Begin
Send CreateComObject of hoSbToken
End
Get ComLoadFile Of hoSbToken "qa_data/tokens/googleCloudStorageAccessToken.txt" "utf-8" To iSuccess
// ---- Step 1
// Create the JSON body of the PUT request that will be sent.
// {
// "storageClass": "[STORAGE_CLASS]"
// }
//
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
// Be careful if using the "regional" storage class. See the note below about the 400 error response.
Get ComUpdateString Of hoJson "storageClass" "nearline" To iSuccess
// ---- 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"
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Get ComGetAsString Of hoSbToken To sTemp1
Set ComAuthToken Of hoHttp To sTemp1
Get ComSetUrlVar Of hoHttp "bucket_name" "chilkat-ocean" To iSuccess
Move "https://www.googleapis.com/storage/v1/b/{$bucket_name}?fields=storageClass" To sUrl
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get pvComObject of hoJson to vJson
Get pvComObject of hoResp to vResp
Get ComHttpJson Of hoHttp "PUT" sUrl vJson "application/json" vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComStatusCode Of hoResp To iResponseCode
If (iResponseCode = 401) Begin
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
Showln "If invalid credentials, then it is likely the access token expired."
Showln "Your app should automatically fetch a new access token and re-try."
Procedure_Return
End
// 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.
Showln "Response code: " iResponseCode
Showln "Response body"
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
// A response code = 200 indicates success, and the response body contains the JSON
//
// Response code: 200
// Response body
// {
// "storageClass": "NEARLINE"
// }
//
End_Procedure