Unicode C
Unicode C
Xero Get File Content (Files API)
Demonstrates how to download the content of a Xero file.Note: This example requires Chilkat v9.5.0.64 or greater.
Chilkat Unicode C Downloads
#include <C_CkRestW.h>
#include <C_CkStringBuilderW.h>
#include <C_CkBinDataW.h>
void ChilkatSample(void)
{
BOOL success;
HCkRestW rest;
const wchar_t *fileID;
HCkStringBuilderW sbPath;
int numReplaced;
HCkBinDataW jpgData;
HCkStringBuilderW sbErrorText;
success = FALSE;
// Note: Requires Chilkat v9.5.0.64 or greater.
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
rest = CkRestW_Create();
// Before sending REST API calls, the REST object needs to be
// initialized for OAuth1.
// See Xero 2-Legged OAuth1 Setup for sample code.
// Assuming the REST object's OAuth1 authenticator is setup, and the initial
// connection was made, we may now send REST HTTP requests..
// ------------------------------------------------------------------------------
fileID = L"f042e9a3-a31d-4595-b8b3-6030ea6084bb";
sbPath = CkStringBuilderW_Create();
CkStringBuilderW_Append(sbPath,L"/files.xro/1.0/Files/{FileId}/Content");
numReplaced = CkStringBuilderW_Replace(sbPath,L"{FileId}",fileID);
jpgData = CkBinDataW_Create();
success = CkRestW_FullRequestNoBodyBd(rest,L"GET",CkStringBuilderW_getAsString(sbPath),jpgData);
if (success != TRUE) {
wprintf(L"%s\n",CkRestW_lastErrorText(rest));
CkRestW_Dispose(rest);
CkStringBuilderW_Dispose(sbPath);
CkBinDataW_Dispose(jpgData);
return;
}
// A 200 response is expected for actual success.
// If we don't get a 200 response, then the response body was not actually
// the file data, but it was text containing error information.
if (CkRestW_getResponseStatusCode(rest) != 200) {
sbErrorText = CkStringBuilderW_Create();
CkStringBuilderW_AppendBd(sbErrorText,jpgData,L"utf-8",0,0);
wprintf(L"%s\n",CkStringBuilderW_getAsString(sbErrorText));
wprintf(L"-- Failed.\n");
CkRestW_Dispose(rest);
CkStringBuilderW_Dispose(sbPath);
CkBinDataW_Dispose(jpgData);
CkStringBuilderW_Dispose(sbErrorText);
return;
}
// Save to a local file.
success = CkBinDataW_WriteFile(jpgData,L"qa_output/xero_penguins.jpg");
if (success != TRUE) {
wprintf(L"Failed to save to local file.\n");
}
wprintf(L"Xero Get File was Successful.\n");
CkRestW_Dispose(rest);
CkStringBuilderW_Dispose(sbPath);
CkBinDataW_Dispose(jpgData);
CkStringBuilderW_Dispose(sbErrorText);
}