DaemonApiException.fromResponse constructor
DaemonApiException.fromResponse({})
Implementation
factory DaemonApiException.fromResponse({
required int? statusCode,
required Object? body,
Object? cause,
}) {
final decoded = _decodeBody(body);
final envelope = decoded is Map ? decoded['error'] : null;
if (envelope is Map) {
final code = _nonEmpty(envelope['code']) ?? 'DAEMON_API_ERROR';
final message =
_nonEmpty(envelope['message']) ?? 'OpenTool daemon request failed';
return DaemonApiException(
code: code,
message: message,
retryable:
envelope['retryable'] as bool? ?? _statusIsRetryable(statusCode),
statusCode: statusCode,
requestId: _nonEmpty(envelope['requestId']),
details: envelope['details'],
cause: cause,
);
}
final fallback = _nonEmpty(decoded) ?? 'OpenTool daemon request failed';
return DaemonApiException(
code: 'DAEMON_HTTP_ERROR',
message: fallback,
retryable: _statusIsRetryable(statusCode),
statusCode: statusCode,
details: decoded,
cause: cause,
);
}