Demonstrates how to copy an S3 file from one bucket to another. The file can also be renamed if desired. (The file already exists in S3 in one bucket, and is copied without downloading/uploading to another S3 bucket.) This example copies from /chilkat.qa/starfish.jpg to /chilkat.ocean/starfishCopy.jpg
curl -X PUT https://chilkat.ocean.s3.us-west-2.amazonaws.com/starfishCopy.jpg \
-H "x-amz-copy-source: /chilkat.qa/starfish.jpg"
#include <C_CkRestW.h>
#include <C_CkAuthAwsW.h>
#include <C_CkStringBuilderW.h>
#include <C_CkXmlW.h>
void ChilkatSample(void)
{
HCkRestW rest;
BOOL success;
HCkAuthAwsW authAws;
BOOL bTls;
int port;
BOOL bAutoReconnect;
HCkStringBuilderW sbResponseBody;
int respStatusCode;
HCkXmlW xmlResponse;
const wchar_t *CopyObjectResult_xmlns;
const wchar_t *tagPath;
const wchar_t *LastModified;
const wchar_t *ETag;
rest = CkRestW_Create();
authAws = CkAuthAwsW_Create();
CkAuthAwsW_putAccessKey(authAws,L"AWS_ACCESS_KEY");
CkAuthAwsW_putSecretKey(authAws,L"AWS_SECRET_KEY");
CkAuthAwsW_putRegion(authAws,L"us-west-2");
CkAuthAwsW_putServiceName(authAws,L"s3");
CkRestW_SetAuthAws(rest,authAws);
// URL: https://chilkat.ocean.s3.us-west-2.amazonaws.com/starfishCopy.jpg
bTls = TRUE;
port = 443;
bAutoReconnect = TRUE;
success = CkRestW_Connect(rest,L"chilkat.ocean.s3.us-west-2.amazonaws.com",port,bTls,bAutoReconnect);
if (success != TRUE) {
wprintf(L"ConnectFailReason: %d\n",CkRestW_getConnectFailReason(rest));
wprintf(L"%s\n",CkRestW_lastErrorText(rest));
CkRestW_Dispose(rest);
CkAuthAwsW_Dispose(authAws);
return;
}
CkRestW_AddHeader(rest,L"x-amz-copy-source",L"/chilkat.qa/starfish.jpg");
sbResponseBody = CkStringBuilderW_Create();
success = CkRestW_FullRequestNoBodySb(rest,L"PUT",L"/starfishCopy.jpg",sbResponseBody);
if (success != TRUE) {
wprintf(L"%s\n",CkRestW_lastErrorText(rest));
CkRestW_Dispose(rest);
CkAuthAwsW_Dispose(authAws);
CkStringBuilderW_Dispose(sbResponseBody);
return;
}
respStatusCode = CkRestW_getResponseStatusCode(rest);
if (respStatusCode >= 400) {
wprintf(L"Response Status Code = %d\n",respStatusCode);
wprintf(L"Response Header:\n");
wprintf(L"%s\n",CkRestW_responseHeader(rest));
wprintf(L"Response Body:\n");
wprintf(L"%s\n",CkStringBuilderW_getAsString(sbResponseBody));
CkRestW_Dispose(rest);
CkAuthAwsW_Dispose(authAws);
CkStringBuilderW_Dispose(sbResponseBody);
return;
}
xmlResponse = CkXmlW_Create();
CkXmlW_LoadSb(xmlResponse,sbResponseBody,TRUE);
// See the Online Tool for Generating XML Parse Code
CopyObjectResult_xmlns = CkXmlW_getAttrValue(xmlResponse,L"xmlns");
LastModified = CkXmlW_getChildContent(xmlResponse,L"LastModified");
ETag = CkXmlW_getChildContent(xmlResponse,L"ETag");
CkRestW_Dispose(rest);
CkAuthAwsW_Dispose(authAws);
CkStringBuilderW_Dispose(sbResponseBody);
CkXmlW_Dispose(xmlResponse);
}
<?xml version="1.0" encoding="UTF-8"?>
<CopyObjectResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<LastModified>2018-12-18T15:53:32.000Z</LastModified>
<ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
</CopyObjectResult>