Unicode C
Unicode C
S3 Find Bucket Region
See more Amazon S3 (new) Examples
Demonstrates how to find out the region of an S3 bucket.Chilkat Unicode C Downloads
#include <C_CkRestW.h>
#include <C_CkAuthAwsW.h>
#include <C_CkXmlW.h>
void ChilkatSample(void)
{
BOOL success;
HCkRestW rest;
BOOL bTls;
int port;
BOOL bAutoReconnect;
HCkAuthAwsW authAws;
const wchar_t *strResult;
int responseStatusCode;
HCkXmlW xml;
success = FALSE;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
rest = CkRestW_Create();
// Connect to the Amazon AWS REST server using the correct region (in this example, "us-west-2")
bTls = TRUE;
port = 443;
bAutoReconnect = TRUE;
success = CkRestW_Connect(rest,L"s3.amazonaws.com",port,bTls,bAutoReconnect);
// Provide AWS credentials for the REST call.
authAws = CkAuthAwsW_Create();
CkAuthAwsW_putAccessKey(authAws,L"AWS_ACCESS_KEY");
CkAuthAwsW_putSecretKey(authAws,L"AWS_SECRET_KEY");
CkAuthAwsW_putServiceName(authAws,L"s3");
success = CkRestW_SetAuthAws(rest,authAws);
// The bucket name we want to know about is set in the HOST header.
// In this example, we want to find the region for the "chilkat.qa" bucket.
CkRestW_putHost(rest,L"chilkat.qa.s3.amazonaws.com");
// Send the GET request to query the bucket location.
strResult = CkRestW_fullRequestNoBody(rest,L"GET",L"/?location");
if (CkRestW_getLastMethodSuccess(rest) != TRUE) {
wprintf(L"%s\n",CkRestW_lastErrorText(rest));
CkRestW_Dispose(rest);
CkAuthAwsW_Dispose(authAws);
return;
}
responseStatusCode = CkRestW_getResponseStatusCode(rest);
wprintf(L"Response status code = %d\n",responseStatusCode);
if (responseStatusCode != 200) {
wprintf(L"%s\n",CkRestW_responseHeader(rest));
wprintf(L"%s\n",strResult);
wprintf(L"Failed.\n");
CkRestW_Dispose(rest);
CkAuthAwsW_Dispose(authAws);
return;
}
wprintf(L"%s\n",strResult);
// The result contains XML like this:
// <?xml version="1.0" encoding="UTF-8"?>
// <LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">us-west-2</LocationConstraint>
// Get the "us-west-2" from the XML
xml = CkXmlW_Create();
success = CkXmlW_LoadXml(xml,strResult);
wprintf(L"region = %s\n",CkXmlW_content(xml));
CkRestW_Dispose(rest);
CkAuthAwsW_Dispose(authAws);
CkXmlW_Dispose(xml);
}