Sample code for 30+ languages & platforms
Visual FoxPro

Xero Upload Attachment

Upload an attachment. (POST an attachment).

Note: Requires Chilkat v9.5.0.64 or greater.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loRest
LOCAL lcEndPoint
LOCAL lcReceiptID
LOCAL lcFilename
LOCAL loSbPath
LOCAL lnNumReplaced
LOCAL loJpgData
LOCAL loJpgDataFromWeb
LOCAL loHttp
LOCAL loSbResponseBody

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

*  --------------------------------------------------------------
*  This example will upload an image attachment to a receipt.

lcEndPoint = "Receipts"
lcReceiptID = "c4f40e59-c390-0001-caff-ce731c707d00"
*  This JPG image can be downloaded from https://www.chilkatsoft.com/syncedImages/penguins.jpg
lcFilename = "penguins.jpg"

loSbPath = CreateObject('Chilkat.StringBuilder')
loSbPath.Append("/api.xro/2.0/{Endpoint}/{Guid}/Attachments/{Filename}")
lnNumReplaced = loSbPath.Replace("{Endpoint}",lcEndPoint)
lnNumReplaced = loSbPath.Replace("{Guid}",lcReceiptID)
lnNumReplaced = loSbPath.Replace("{Filename}",lcFilename)

loRest.AddHeader("Content-Type","image/jpeg")

*  Load the JPG image from a file.
loJpgData = CreateObject('Chilkat.BinData')
lnSuccess = loJpgData.LoadFile("qa_data/jpg/penguins.jpg")

*  We could alternatively get it from a URL like this:
loJpgDataFromWeb = CreateObject('Chilkat.BinData')
loHttp = CreateObject('Chilkat.Http')
lnSuccess = loHttp.QuickGetBd("https://www.chilkatsoft.com/syncedImages/penguins.jpg",loJpgDataFromWeb)
IF (lnSuccess <> 1) THEN
    ? loHttp.LastErrorText
    RELEASE loRest
    RELEASE loSbPath
    RELEASE loJpgData
    RELEASE loJpgDataFromWeb
    RELEASE loHttp
    CANCEL
ENDIF

*  Upload with a POST
loSbResponseBody = CreateObject('Chilkat.StringBuilder')
lnSuccess = loRest.FullRequestBd("POST",loSbPath.GetAsString(),loJpgData,loSbResponseBody)
IF (lnSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loSbPath
    RELEASE loJpgData
    RELEASE loJpgDataFromWeb
    RELEASE loHttp
    RELEASE loSbResponseBody
    CANCEL
ENDIF

*  A 200 response is expected for actual success.
IF (loRest.ResponseStatusCode <> 200) THEN
    ? loSbResponseBody.GetAsString()
    RELEASE loRest
    RELEASE loSbPath
    RELEASE loJpgData
    RELEASE loJpgDataFromWeb
    RELEASE loHttp
    RELEASE loSbResponseBody
    CANCEL
ENDIF

*  Examine the XML response
? loSbResponseBody.GetAsString()

*  A successful response looks like this:

*  	<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
*  	  <Id>d82568cd-d222-49e6-b713-880b6edb0606</Id>
*  	  <Status>OK</Status>
*  	  <ProviderName>ChilkatPrivate</ProviderName>
*  	  <DateTimeUTC>2016-11-11T14:17:49.5922609Z</DateTimeUTC>
*  	  <Attachments>
*  	    <Attachment>
*  	      <AttachmentID>0edcddc8-325f-40c7-b950-8c71f14afc7c</AttachmentID>
*  	      <FileName>penguins.jpg</FileName>
*  	      <Url>http://api.xero.com/api.xro/2.0/Receipts/c4f40e59-c390-0001-caff-ce731c707d00/Attachments/penguins.jpg</Url>
*  	      <MimeType>image/jpg</MimeType>
*  	      <ContentLength>777835</ContentLength>
*  	    </Attachment>
*  	  </Attachments>
*  	</Response>

RELEASE loRest
RELEASE loSbPath
RELEASE loJpgData
RELEASE loJpgDataFromWeb
RELEASE loHttp
RELEASE loSbResponseBody