C
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 C Downloads
#include <C_CkRest.h>
#include <C_CkStringBuilder.h>
#include <C_CkBinData.h>
void ChilkatSample(void)
{
BOOL success;
HCkRest rest;
const char *fileID;
HCkStringBuilder sbPath;
int numReplaced;
HCkBinData jpgData;
HCkStringBuilder 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 = CkRest_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 = "f042e9a3-a31d-4595-b8b3-6030ea6084bb";
sbPath = CkStringBuilder_Create();
CkStringBuilder_Append(sbPath,"/files.xro/1.0/Files/{FileId}/Content");
numReplaced = CkStringBuilder_Replace(sbPath,"{FileId}",fileID);
jpgData = CkBinData_Create();
success = CkRest_FullRequestNoBodyBd(rest,"GET",CkStringBuilder_getAsString(sbPath),jpgData);
if (success != TRUE) {
printf("%s\n",CkRest_lastErrorText(rest));
CkRest_Dispose(rest);
CkStringBuilder_Dispose(sbPath);
CkBinData_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 (CkRest_getResponseStatusCode(rest) != 200) {
sbErrorText = CkStringBuilder_Create();
CkStringBuilder_AppendBd(sbErrorText,jpgData,"utf-8",0,0);
printf("%s\n",CkStringBuilder_getAsString(sbErrorText));
printf("-- Failed.\n");
CkRest_Dispose(rest);
CkStringBuilder_Dispose(sbPath);
CkBinData_Dispose(jpgData);
CkStringBuilder_Dispose(sbErrorText);
return;
}
// Save to a local file.
success = CkBinData_WriteFile(jpgData,"qa_output/xero_penguins.jpg");
if (success != TRUE) {
printf("Failed to save to local file.\n");
}
printf("Xero Get File was Successful.\n");
CkRest_Dispose(rest);
CkStringBuilder_Dispose(sbPath);
CkBinData_Dispose(jpgData);
CkStringBuilder_Dispose(sbErrorText);
}