Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loRest
LOCAL lcFileID
LOCAL loSbPath
LOCAL lnNumReplaced
LOCAL loJpgData
LOCAL loSbErrorText

lnSuccess = 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.

loRest = 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..

* ------------------------------------------------------------------------------
lcFileID = "f042e9a3-a31d-4595-b8b3-6030ea6084bb"

loSbPath = CreateObject('Chilkat.StringBuilder')
loSbPath.Append("/files.xro/1.0/Files/{FileId}/Content")
lnNumReplaced = loSbPath.Replace("{FileId}",lcFileID)

loJpgData = CreateObject('Chilkat.BinData')
lnSuccess = loRest.FullRequestNoBodyBd("GET",loSbPath.GetAsString(),loJpgData)
IF (lnSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loSbPath
    RELEASE loJpgData
    CANCEL
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 (loRest.ResponseStatusCode <> 200) THEN
    loSbErrorText = CreateObject('Chilkat.StringBuilder')
    loSbErrorText.AppendBd(loJpgData,"utf-8",0,0)
    ? loSbErrorText.GetAsString()
    ? "-- Failed."
    RELEASE loRest
    RELEASE loSbPath
    RELEASE loJpgData
    RELEASE loSbErrorText
    CANCEL
ENDIF

* Save to a local file.
lnSuccess = loJpgData.WriteFile("qa_output/xero_penguins.jpg")
IF (lnSuccess <> 1) THEN
    ? "Failed to save to local file."
ENDIF

? "Xero Get File was Successful."

RELEASE loRest
RELEASE loSbPath
RELEASE loJpgData
RELEASE loSbErrorText