Sample code for 30+ languages & platforms
Xbase++

Amazon Glacier List Vaults

See more Amazon Glacier Examples

Demonstrates how to list the glacier vaults in a given region.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oRest
LOCAL nBTls
LOCAL nPort
LOCAL nBAutoReconnect
LOCAL oAuthAws
LOCAL oSbResponseBody
LOCAL nRespStatusCode
LOCAL oJson
LOCAL cMarker
LOCAL i
LOCAL nCount_i
LOCAL cCreationDate
LOCAL cLastInventoryDate
LOCAL nNumberOfArchives
LOCAL nSizeInBytes
LOCAL cVaultARN
LOCAL cVaultName

nSuccess := 0

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

oRest := CreateObject("Chilkat.Rest")

//  Connect to the Amazon AWS REST server in the desired region.
nBTls := 1
nPort := 443
nBAutoReconnect := 1
nSuccess := oRest:Connect("glacier.us-west-2.amazonaws.com", nPort, nBTls, nBAutoReconnect)

//  Provide AWS credentials.
oAuthAws := CreateObject("Chilkat.AuthAws")
oAuthAws:AccessKey := "AWS_ACCESS_KEY"
oAuthAws:SecretKey := "AWS_SECRET_KEY"
oAuthAws:ServiceName := "glacier"
oAuthAws:Region := "us-west-2"

nSuccess := oRest:SetAuthAws(oAuthAws)

//  --------------------------------------------------------------------------
//  Note: The above REST connection and setup of the AWS credentials
//  can be done once.  After connecting, any number of REST calls can be made.
//  The "auto reconnect" property passed to rest.Connect indicates that if
//  the connection is lost, a REST method call will automatically reconnect
//  if needed.
//  --------------------------------------------------------------------------

//  For more information, see Glacier List Vaults Reference Documentation
//  
oRest:AddHeader("x-amz-glacier-version", "2012-06-01")

//  Get the glacier vaults in my account's us-west-2 region.
oSbResponseBody := CreateObject("Chilkat.StringBuilder")
nSuccess := oRest:FullRequestNoBodySb("GET", "/AWS_ACCOUNT_ID/vaults", oSbResponseBody)
IF (nSuccess != 1)
    ? oRest:LastErrorText
    oRest:destroy()
    oAuthAws:destroy()
    oSbResponseBody:destroy()
    RETURN
ENDIF

nRespStatusCode := oRest:ResponseStatusCode
IF (nRespStatusCode >= 400)
    ? "Response Status Code = " + Str(nRespStatusCode)
    ? "Response Header:"
    ? oRest:ResponseHeader
    ? "Response Body:"
    ? oSbResponseBody:GetAsString()
    oRest:destroy()
    oAuthAws:destroy()
    oSbResponseBody:destroy()
    RETURN
ENDIF

//  Success is indicated by a 200 response status with an empty response body.
? "response status code = " + Str(nRespStatusCode)

oJson := CreateObject("Chilkat.JsonObject")
oJson:LoadSb(oSbResponseBody)
oJson:EmitCompact := 0

? oJson:Emit()

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

cMarker := oJson:StringOf("Marker")
i := 0
nCount_i := oJson:SizeOfArray("VaultList")
DO WHILE i < nCount_i
    oJson:I := i
    cCreationDate := oJson:StringOf("VaultList[i].CreationDate")
    cLastInventoryDate := oJson:StringOf("VaultList[i].LastInventoryDate")
    nNumberOfArchives := oJson:IntOf("VaultList[i].NumberOfArchives")
    nSizeInBytes := oJson:IntOf("VaultList[i].SizeInBytes")
    cVaultARN := oJson:StringOf("VaultList[i].VaultARN")
    cVaultName := oJson:StringOf("VaultList[i].VaultName")
    i := i + 1
ENDDO

//  Sample response
//  
//  {
//    "Marker": null,
//    "VaultList": [
//      {
//        "CreationDate": "2019-04-05T19:10:28.428Z",
//        "LastInventoryDate": null,
//        "NumberOfArchives": 0,
//        "SizeInBytes": 0,
//        "VaultARN": "arn:aws:glacier:us-west-2:954491834127:vaults/chilkat",
//        "VaultName": "chilkat"
//      },
//      {
//        "CreationDate": "2019-04-05T19:00:21.768Z",
//        "LastInventoryDate": null,
//        "NumberOfArchives": 0,
//        "SizeInBytes": 0,
//        "VaultARN": "arn:aws:glacier:us-west-2:954491834127:vaults/ocean",
//        "VaultName": "ocean"
//      }
//    ]
//  }
//

oRest:destroy()
oAuthAws:destroy()
oSbResponseBody:destroy()
oJson:destroy()