Sample code for 30+ languages & platforms
Dart

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 Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // 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.

  final rest = CkRest();

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

  // ------------------------------------------------------------------------------
  final fileID = 'f042e9a3-a31d-4595-b8b3-6030ea6084bb';

  final sbPath = CkStringBuilder();
  sbPath.append('/files.xro/1.0/Files/{FileId}/Content');
  final numReplaced = sbPath.replace('{FileId}', fileID);

  final jpgData = CkBinData();
  try {
    rest.fullRequestNoBodyBd('GET', sbPath.getAsString(), jpgData);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // 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 (rest.responseStatusCode != 200) {
    final sbErrorText = CkStringBuilder();
    sbErrorText.appendBd(jpgData, 'utf-8', 0, 0);
    print(sbErrorText.getAsString());
    print('-- Failed.');
    return;
  }

  // Save to a local file.
  try {
    jpgData.writeFile('qa_output/xero_penguins.jpg');
  } on ChilkatException {
    print('Failed to save to local file.');
  }

  print('Xero Get File was Successful.');
}