getStatusCode method

BleStatusCode getStatusCode(
  1. Uint8List codes
)

Returns a BleStatusCode object that contains the int status code of the response

Implementation

BleStatusCode getStatusCode(Uint8List codes) {
  LogbotLogger()
      .simple("ApiClient.getStatusCodes() originalCodesValues=$codes");
  Uint8List statusCodeSubList = codes.sublist(0, 2);
  ByteData byteData = ByteData.sublistView(statusCodeSubList);
  int statusCode = byteData.getUint16(0, Endian.little);
  LogbotLogger().simple("ApiClient.getStatusCodes() statusCode=$statusCode");

  /// Procedure to check if the result is or not. Is not valid
  /// if the result is truncated
  Uint8List dataStatusBitField = codes.sublist(2, 3);

  /// Data Status bit field:
  /// 5: BOTH BODY AND HEADERS RECEIVED SUCCESSFULLY,
  /// 6: BODY RECEIVED SUCCESSFULLY,
  /// 9: HEADERS RECEIVED SUCCESSFULLY,
  /// 10: BODY AND HEADERS TRUNCATED
  int dataStatus =
      int.parse(dataStatusBitField.first.toRadixString(2), radix: 2);

  final int httpSuccessStatus = int.parse('0101', radix: 2);
  final int httpHeaderTruncated = int.parse('1000', radix: 2);
  final int httpBodyTruncated = int.parse('0010', radix: 2);

  /// CHECK TRUNCATION
  bool isValid = dataStatus & httpSuccessStatus != 0;
  bool isHeadersTruncated = dataStatus & httpBodyTruncated != 0;
  bool isBodyTruncated = dataStatus & httpHeaderTruncated != 0;

  LogbotLogger()
      .simple("ApiClient.getStatusCodes() int=$int; isValid=$isValid");

  return BleStatusCode(
    statusCode: statusCode,
    isValid: isValid && !isBodyTruncated && !isHeadersTruncated,
    isBodyTruncated: isBodyTruncated,
    isHeadersTruncated: isHeadersTruncated,
  );
}