callPdfOrData method
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);
}