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