callPdfOrData method

Future<PdfOrData> callPdfOrData(
  1. String name,
  2. Map<String, dynamic> params
)

Einen Aufruf absetzen, der eine Datei oder eine Nutzlast liefert (Inventurprotokoll getStocktakePdf: die Datei bis 9 MiB, darueber ein Lese-Link). Zwilling von createPdfOrDataTransport im JS-Paket, wie InvoiceTransport.callBinary als Methode des Transports.

Die ersten Bytes entscheiden: %PDF ergibt PdfOrDataFile, eine Erfolgshuelle PdfOrDataPayload mit ihrer data, eine Fehlerhuelle denselben fachlichen Fehler wie call. Leer, kein JSON oder ohne Statusfeld ist unlesbar mit denselben Gruenden wie dort.

Implementation

Future<PdfOrData> callPdfOrData(String name, Map<String, dynamic> params) async {
  final probelauf = isDryRun(name, params);
  final antwort = await _senden(name, params, probelauf);
  final bytes = antwort.bodyBytes;
  if (bytes.length >= 4 && bytes[0] == 0x25 && bytes[1] == 0x50 && bytes[2] == 0x44 && bytes[3] == 0x46) {
    return PdfOrDataFile(bytes); // %PDF
  }
  final huelle = readEnvelope(name, antwort, dryRun: probelauf);
  if (huelle['status'] == 'success') {
    return PdfOrDataPayload(envelopeData(name, huelle, antwort.statusCode, dryRun: probelauf));
  }
  throw envelopeError(name, huelle);
}