Sample code for 30+ languages & platforms
Xbase++

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 Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oRest
LOCAL cFileID
LOCAL oSbPath
LOCAL nNumReplaced
LOCAL oJpgData
LOCAL oSbErrorText

nSuccess := 0

//  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.

oRest := CreateObject("Chilkat.Rest")

//  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..

//  ------------------------------------------------------------------------------
cFileID := "f042e9a3-a31d-4595-b8b3-6030ea6084bb"

oSbPath := CreateObject("Chilkat.StringBuilder")
oSbPath:Append("/files.xro/1.0/Files/{FileId}/Content")
nNumReplaced := oSbPath:Replace("{FileId}", cFileID)

oJpgData := CreateObject("Chilkat.BinData")
nSuccess := oRest:FullRequestNoBodyBd("GET", oSbPath:GetAsString(), oJpgData)
IF (nSuccess != 1)
    ? oRest:LastErrorText
    oRest:destroy()
    oSbPath:destroy()
    oJpgData:destroy()
    RETURN
ENDIF

//  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 (oRest:ResponseStatusCode != 200)
    oSbErrorText := CreateObject("Chilkat.StringBuilder")
    oSbErrorText:AppendBd(oJpgData, "utf-8", 0, 0)
    ? oSbErrorText:GetAsString()
    ? "-- Failed."
    oRest:destroy()
    oSbPath:destroy()
    oJpgData:destroy()
    oSbErrorText:destroy()
    RETURN
ENDIF

//  Save to a local file.
nSuccess := oJpgData:WriteFile("qa_output/xero_penguins.jpg")
IF (nSuccess != 1)
    ? "Failed to save to local file."
ENDIF

? "Xero Get File was Successful."

oRest:destroy()
oSbPath:destroy()
oJpgData:destroy()
oSbErrorText:destroy()