Sample code for 30+ languages & platforms
Visual FoxPro

Xero Get Folders (Files API)

Demonstrates how to retrieve the list of folders.

Note: This example requires Chilkat v9.5.0.64 or greater.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loRest
LOCAL loSbJson
LOCAL loJsonArr
LOCAL i
LOCAL lnNumFolders
LOCAL loJson

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

*  Get the full list of folders (in the FILES API)
loSbJson = CreateObject('Chilkat.StringBuilder')
lnSuccess = loRest.FullRequestNoBodySb("GET","/files.xro/1.0/Folders",loSbJson)
IF (lnSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loSbJson
    CANCEL
ENDIF

*  The response is a JSON array.
loJsonArr = CreateObject('Chilkat.JsonArray')
loJsonArr.LoadSb(loSbJson)
loJsonArr.EmitCompact = 0

*  A 200 response is expected for actual success.
IF (loRest.ResponseStatusCode <> 200) THEN
    ? loJsonArr.Emit()
    RELEASE loRest
    RELEASE loSbJson
    RELEASE loJsonArr
    CANCEL
ENDIF

? loJsonArr.Emit()

*  The JSON list of folders looks like this:
*  See the code below showing how to iterate over the folders..

*  	[
*  	  { 
*  	    "Name": "Inbox",
*  	    "FileCount": 0,
*  	    "Email": "xero.inbox.bt0xx.99ha3l7a28m7ghyn@xerofiles.com",
*  	    "IsInbox": true,
*  	    "Id": "de386667-2532-49d3-8ad8-b7727b128ea2"
*  	  },
*  	  { 
*  	    "Name": "Contracts",
*  	    "FileCount": 0,
*  	    "IsInbox": false,
*  	    "Id": "36f15a6e-74f3-42fd-8797-e288b9aae234"
*  	  },
*  	  { 
*  	    "Name": "Images",
*  	    "FileCount": 0,
*  	    "IsInbox": false,
*  	    "Id": "0ffca059-f2f1-4271-8de9-4b87c8c2c638"
*  	  }
*  	]

i = 0
lnNumFolders = loJsonArr.Size
DO WHILE i < lnNumFolders
    loJson = loJsonArr.ObjectAt(i)
    ? "Name: " + loJson.StringOf("Name")
    ? "FileCount: " + STR(loJson.IntOf("FileCount"))
    ? "IsInbox: " + STR(loJson.BoolOf("IsInbox"))
    ? "Id: " + loJson.StringOf("Id")
    ? "--"
    RELEASE loJson
    i = i + 1
ENDDO

RELEASE loRest
RELEASE loSbJson
RELEASE loJsonArr