1
1
import 'package:dio/dio.dart' ;
2
- import 'package:instabug_flutter/models/network_data.dart' ;
3
2
import 'package:instabug_flutter/NetworkLogger.dart' ;
3
+ import 'package:instabug_flutter/models/network_data.dart' ;
4
4
5
5
class InstabugDioInterceptor extends Interceptor {
6
6
static final Map <int , NetworkData > _requests = < int , NetworkData > {};
7
-
7
+ static final NetworkLogger _networklogger = NetworkLogger ();
8
8
@override
9
9
void onRequest (RequestOptions options, RequestInterceptorHandler handler) {
10
10
final NetworkData data = NetworkData (
@@ -19,15 +19,15 @@ class InstabugDioInterceptor extends Interceptor {
19
19
void onResponse (
20
20
Response <dynamic > response, ResponseInterceptorHandler handler) {
21
21
final NetworkData data = _map (response);
22
- NetworkLogger .networkLog (data);
22
+ _networklogger .networkLog (data);
23
23
handler.next (response);
24
24
}
25
25
26
26
@override
27
27
void onError (DioError err, ErrorInterceptorHandler handler) {
28
28
if (err.response != null ) {
29
29
final NetworkData data = _map (err.response! );
30
- NetworkLogger .networkLog (data);
30
+ _networklogger .networkLog (data);
31
31
}
32
32
33
33
handler.next (err);
@@ -46,20 +46,41 @@ class InstabugDioInterceptor extends Interceptor {
46
46
47
47
response.headers
48
48
.forEach ((String name, dynamic value) => responseHeaders[name] = value);
49
+
50
+ String responseContentType = '' ;
51
+ if (responseHeaders.containsKey ('content-type' )) {
52
+ responseContentType = responseHeaders['content-type' ].toString ();
53
+ }
54
+
55
+ int requestBodySize = 0 ;
56
+ if (response.requestOptions.headers.containsKey ('content-length' )) {
57
+ requestBodySize =
58
+ int .parse (response.requestOptions.headers['content-length' ] ?? '0' );
59
+ } else if (response.requestOptions.data != null ) {
60
+ requestBodySize = response.requestOptions.data.toString ().length;
61
+ }
62
+
63
+ int responseBodySize = 0 ;
64
+ if (responseHeaders.containsKey ('content-length' )) {
65
+ responseBodySize = int .parse (responseHeaders['content-length' ][0 ] ?? '0' );
66
+ } else if (response.data != null ) {
67
+ responseBodySize = response.data.toString ().length;
68
+ }
69
+
49
70
return data.copyWith (
50
71
endTime: endTime,
51
- duration: endTime != null
52
- ? endTime.millisecondsSinceEpoch -
53
- data.startTime.millisecondsSinceEpoch
54
- : 0 ,
72
+ duration: endTime.difference (data.startTime).inMicroseconds,
55
73
url: response.requestOptions.uri.toString (),
56
74
method: response.requestOptions.method,
57
75
requestBody: response.requestOptions.data.toString (),
58
76
requestHeaders: response.requestOptions.headers,
59
- contentType: response.requestOptions.contentType,
77
+ requestContentType: response.requestOptions.contentType,
78
+ requestBodySize: requestBodySize,
60
79
status: response.statusCode,
61
80
responseBody: response.data.toString (),
62
81
responseHeaders: responseHeaders,
82
+ responseContentType: responseContentType,
83
+ responseBodySize: responseBodySize,
63
84
);
64
85
}
65
86
}
0 commit comments