Skip to content

Commit efd961d

Browse files
committed
feat: utilize network manager size checker APIs inside network_logger.dart
- Added early checks for request and response body size limits in `networkLogInternal`. - Implemented truncation of request/response bodies with warning messages if size limits are exceeded. - Logged truncation events using `InstabugLogger` for better visibility into network logging behavior.
1 parent 96306fe commit efd961d

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

lib/src/modules/network_logger.dart

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import 'package:instabug_flutter/src/models/network_data.dart';
66
import 'package:instabug_flutter/src/models/w3c_header.dart';
77
import 'package:instabug_flutter/src/modules/apm.dart';
88
import 'package:instabug_flutter/src/utils/feature_flags_manager.dart';
9+
import 'package:instabug_flutter/src/utils/instabug_constants.dart';
10+
import 'package:instabug_flutter/src/utils/instabug_logger.dart';
911
import 'package:instabug_flutter/src/utils/iterable_ext.dart';
1012
import 'package:instabug_flutter/src/utils/network_manager.dart';
1113
import 'package:instabug_flutter/src/utils/w3c_header_utils.dart';
@@ -86,7 +88,34 @@ class NetworkLogger {
8688
Future<void> networkLogInternal(NetworkData data) async {
8789
final omit = await _manager.omitLog(data);
8890
if (omit) return;
89-
final obfuscated = await _manager.obfuscateLog(data);
91+
92+
// Check size limits early to avoid processing large bodies
93+
final requestExceeds = await _manager.didRequestBodyExceedSizeLimit(data);
94+
final responseExceeds = await _manager.didResponseBodyExceedSizeLimit(data);
95+
96+
var processedData = data;
97+
if (requestExceeds || responseExceeds) {
98+
// Replace bodies with warning messages
99+
processedData = data.copyWith(
100+
requestBody: requestExceeds
101+
? InstabugConstants.getRequestBodyReplacementMessage(
102+
data.requestBodySize)
103+
: data.requestBody,
104+
responseBody: responseExceeds
105+
? InstabugConstants.getResponseBodyReplacementMessage(
106+
data.responseBodySize)
107+
: data.responseBody,
108+
);
109+
110+
// Log the truncation event.
111+
final isBothExceeds = requestExceeds && responseExceeds;
112+
InstabugLogger.I.e(
113+
"Truncated network ${isBothExceeds ? 'request and response' : requestExceeds ? 'request' : 'response'} body",
114+
tag: InstabugConstants.networkLoggerTag,
115+
);
116+
}
117+
118+
final obfuscated = await _manager.obfuscateLog(processedData);
90119
await _host.networkLog(obfuscated.toJson());
91120
await APM.networkLogAndroid(obfuscated);
92121
}

0 commit comments

Comments
 (0)