Xbase++
Xbase++
Glacier Initiate Inventory Retrieval Job
See more Amazon Glacier Examples
Demonstrates how to initiate an inventory retrieval job to get a list of archives from the examplevault vault. The Format set to CSV in the body of the request indicates that the inventory is returned in CSV format.Note: This example requires Chilkat v9.5.0.78 or greater.
Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oRest
LOCAL nBTls
LOCAL nPort
LOCAL nBAutoReconnect
LOCAL oAuthAws
LOCAL oJson
LOCAL oSbRequestBody
LOCAL oSbResponseBody
LOCAL nRespStatusCode
LOCAL cJobId
LOCAL cLocation
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 Initiate Job Post Reference Documentation
//
oRest:AddHeader("x-amz-glacier-version", "2012-06-01")
// The body of our request will contain this JSON:
// {
// "Type": "inventory-retrieval",
// "Description": "My inventory job",
// "Format": "CSV",
// "SNSTopic": "arn:aws:sns:us-west-2:111111111111:Glacier-InventoryRetrieval-topic-Example"
// }
// Use this online tool to generate the code from sample JSON:
// Generate Code to Create JSON
oJson := CreateObject("Chilkat.JsonObject")
oJson:UpdateString("Type", "inventory-retrieval")
oJson:UpdateString("Description", "My inventory job")
oJson:UpdateString("Format", "CSV")
// The SNSTopic is optional. If included, then notification is sent to the SNS topic when the job is complete.
// This example will omit the SNSTopic.
oSbRequestBody := CreateObject("Chilkat.StringBuilder")
oJson:EmitSb(oSbRequestBody)
oSbResponseBody := CreateObject("Chilkat.StringBuilder")
// Start an inventory retrieval job for the vault named "chilkat".
nSuccess := oRest:FullRequestSb("POST", "/AWS_ACCOUNT_ID/vaults/chilkat/jobs", oSbRequestBody, oSbResponseBody)
IF (nSuccess != 1)
? oRest:LastErrorText
oRest:destroy()
oAuthAws:destroy()
oJson:destroy()
oSbRequestBody: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()
oJson:destroy()
oSbRequestBody:destroy()
oSbResponseBody:destroy()
RETURN
ENDIF
// Success is indicated by a 202 response status with an empty response body.
? "response status code = " + Str(nRespStatusCode)
// If successful, the response header looks like this.
// The Location and x-amz-job-id are two items of information we may wish to save..
// HTTP/1.1 202 Accepted
// x-amzn-RequestId: AAABZpJrTyioDC_HsOmHae8EZp_uBSJr6cnGOLKp_XJCl-Q
// Date: Wed, 10 Feb 2017 12:00:00 GMT
// Location: /111122223333/vaults/examplevault/jobs/HkF9p6o7yjhFx-K3CGl6fuSm6VzW9T7esGQfco8nUXVYwS0jlb5gq1JZ55yHgt5vP54ZShjoQzQVVh7vEXAMPLEjobID
// x-amz-job-id: HkF9p6o7yjhFx-K3CGl6fuSm6VzW9T7esGQfco8nUXVYwS0jlb5gq1JZ55yHgt5vP54ZShjoQzQVVh7vEXAMPLEjobID
//
cJobId := oRest:ResponseHdrByName("x-amz-job-id")
? "x-amz-job-id = " + cJobId
cLocation := oRest:ResponseHdrByName("Location")
? "Location = " + cLocation
oRest:destroy()
oAuthAws:destroy()
oJson:destroy()
oSbRequestBody:destroy()
oSbResponseBody:destroy()