import 'package:apidash/consts.dart'; import 'package:apidash_core/apidash_core.dart' show APIType, HTTPVerb; class NetworkLogData { NetworkLogData({ required this.phase, required this.apiType, required this.method, required this.url, this.requestHeaders, this.requestBodyPreview, this.responseStatus, this.responseHeaders, this.responseBodyPreview, this.duration, this.isStreaming = false, this.sentAt, this.completedAt, this.errorMessage, List? chunks, }) : chunks = chunks ?? []; final NetworkPhase phase; final APIType apiType; final HTTPVerb method; final String url; final Map? requestHeaders; final String? requestBodyPreview; final int? responseStatus; final Map? responseHeaders; final String? responseBodyPreview; final Duration? duration; final bool isStreaming; final DateTime? sentAt; final DateTime? completedAt; final String? errorMessage; final List chunks; NetworkLogData copyWith({ NetworkPhase? phase, APIType? apiType, HTTPVerb? method, String? url, Map? requestHeaders, String? requestBodyPreview, int? responseStatus, Map? responseHeaders, String? responseBodyPreview, Duration? duration, bool? isStreaming, DateTime? sentAt, DateTime? completedAt, String? errorMessage, List? chunks, }) { return NetworkLogData( phase: phase ?? this.phase, apiType: apiType ?? this.apiType, method: method ?? this.method, url: url ?? this.url, requestHeaders: requestHeaders ?? this.requestHeaders, requestBodyPreview: requestBodyPreview ?? this.requestBodyPreview, responseStatus: responseStatus ?? this.responseStatus, responseHeaders: responseHeaders ?? this.responseHeaders, responseBodyPreview: responseBodyPreview ?? this.responseBodyPreview, duration: duration ?? this.duration, isStreaming: isStreaming ?? this.isStreaming, sentAt: sentAt ?? this.sentAt, completedAt: completedAt ?? this.completedAt, errorMessage: errorMessage ?? this.errorMessage, chunks: chunks ?? this.chunks, ); } } class BodyChunk { BodyChunk({required this.ts, required this.text, required this.sizeBytes}); final DateTime ts; final String text; // preview text (could be partial) final int sizeBytes; }