InventoryTransport constructor

InventoryTransport({
  1. required String apiKey,
  2. String? baseUrl,
  3. Client? httpClient,
  4. Duration? timeout,
  5. String? clientHeader,
  6. bool omitKasseneckHeaders = false,
})

baseUrl muss auf /v3 enden, sonst wirft schon das Anlegen.

Implementation

InventoryTransport({
  required String apiKey,
  String? baseUrl,
  http.Client? httpClient,
  Duration? timeout,
  String? clientHeader,
  bool omitKasseneckHeaders = false,
})  : _apiKey = apiKey.trim(),
      baseUrl = v3BaseUrl('InventoryTransport', baseUrl, kInventoryBaseUrl),
      _kopf = V3Headers('InventoryTransport', clientHeader: clientHeader, omit: omitKasseneckHeaders),
      _http = httpClient ?? http.Client(),
      _timeout = timeout ?? const Duration(seconds: 30) {
  // Geprueft wird nur, was ohne Netz sicher falsch ist. Die Meldung nennt die
  // Art des Schluessels, nie seinen Wert.
  if (_apiKey.isEmpty) {
    throw const KasseneckValidationError('InventoryTransport', 'apiKey fehlt', 'request');
  }
  if (RegExp(r'^pk_(live|test)_', caseSensitive: false).hasMatch(_apiKey)) {
    throw const KasseneckValidationError('InventoryTransport',
        'das ist ein Partner-Schluessel (pk_…); die Lager-API nimmt den api_key des Kontos (kr_…)', 'request');
  }
  if (RegExp(r'^cb_(live|test)_', caseSensitive: false).hasMatch(_apiKey)) {
    throw const KasseneckValidationError('InventoryTransport',
        'das ist ein Kassen-Token (cb_…); die Lager-API nimmt den api_key des Kontos (kr_…)', 'request');
  }
}