DataFlex
DataFlex
Xero Download Attachment for an Item (such as an Invoice)
See more Xero Examples
Demonstrates how to download a particular attachment for a particular Xero item.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
Handle hoJsonToken
String sUrl
Variant vBd
Handle hoBd
String sTemp1
Integer iTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken
If (Not(IsComObjectCreated(hoJsonToken))) Begin
Send CreateComObject of hoJsonToken
End
Get ComLoadFile Of hoJsonToken "qa_data/tokens/xero-access-token.json" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoJsonToken To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComStringOf Of hoJsonToken "access_token" To sTemp1
Set ComAuthToken Of hoHttp To sTemp1
// Replace the value here with an actual tenant ID obtained from this example:
// Get Xero Tenant IDs
Send ComSetRequestHeader To hoHttp "Xero-tenant-id" "83299b9e-5747-4a14-a18a-a6c94f824eb7"
Set ComAccept Of hoHttp To "application/json"
// The example to list Xero attachments shows how to get attachment information.
// Here's a sample JSON response obtained form listing attachments:
// Your application can get the AttachmentID's and filenames from it.
// {
// "Id": "24bfbcb9-dec9-4d33-835c-8f165d776766",
// "Status": "OK",
// "ProviderName": "Chilkat2222",
// "DateTimeUTC": "\/Date(1587213296972)\/",
// "Attachments": [
// {
// "AttachmentID": "daf106e2-8634-4349-bfcc-86c1df0793b2",
// "FileName": "penguins.jpg",
// "Url": "https://api.xero.com/api.xro/2.0/Invoices/0032f627-3156-4d30-9b1c-4d3b994dc921/Attachments/penguins.jpg",
// "MimeType": "image/jpg",
// "ContentLength": 777835
// }
// ]
// }
Move "https://api.xero.com/api.xro/2.0/{$Endpoint}/{$Guid}/Attachments/{$AttachmentId}" To sUrl
// Endpoint can be Invoices, Receipts, CreditNotes, PurchaseOrders, etc.
Get ComSetUrlVar Of hoHttp "Endpoint" "Invoices" To iSuccess
// Guid is the ID of the item, such as the InvoiceID.
Get ComSetUrlVar Of hoHttp "Guid" "0032f627-3156-4d30-9b1c-4d3b994dc921" To iSuccess
// AttachmentId is the ID of the particular attachment to be downloaded
Get ComSetUrlVar Of hoHttp "AttachmentId" "daf106e2-8634-4349-bfcc-86c1df0793b2" To iSuccess
// Download the attachment data into bd.
Get Create (RefClass(cComChilkatBinData)) To hoBd
If (Not(IsComObjectCreated(hoBd))) Begin
Send CreateComObject of hoBd
End
Get pvComObject of hoBd to vBd
Get ComQuickGetBd Of hoHttp sUrl vBd To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComLastStatus Of hoHttp To iTemp1
Showln "Response Status Code: " iTemp1
Get ComLastStatus Of hoHttp To iTemp1
If (iTemp1 = 200) Begin
// Success
// Save to a file..
Get ComWriteFile Of hoBd "qa_output/penguines.jpg" To iSuccess
End
Else Begin
// Failed. bd contains error information..
Get ComGetString Of hoBd "utf-8" To sTemp1
Showln sTemp1
End
End_Procedure