Compare commits

..

No commits in common. "bdecf12949484c845e9d04153c310675bce5bb9e" and "9d6aaf64b41e6069abb5a994216983a2e2f64284" have entirely different histories.

1 changed files with 34 additions and 59 deletions

View File

@ -1,87 +1,62 @@
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:yx_net_inspector/yx_net_inspector.dart'; import 'package:yx_net_inspector/src/yx_net_inspector_app.dart';
/// YX Net Inspector Dio /// Dio
/// ///
/// Dio YX Net Inspector /// Dio YxNetInspector
///
/// 使
/// ```dart
/// // App Debug
/// if (kDebugMode) {
/// final dio = YxNetworkServiceManager.instance.mainDio;
/// dio.interceptors.add(YxNetInspectorDioInterceptor());
/// }
/// ```
class YxNetInspectorDioInterceptor extends Interceptor { class YxNetInspectorDioInterceptor extends Interceptor {
final YxNetInspectorController _controller =
YxNetInspectorController.instance;
@override @override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) { void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
// ID //
final requestId = YxNetInspectorGlobal.logRequest(
'${DateTime.now().millisecondsSinceEpoch}_${options.hashCode}'; id: options.hashCode.toString(),
// ID和开始时间
options.extra['yx_request_id'] = requestId;
options.extra['yx_request_start_time'] = DateTime.now();
// YX Net Inspector
_controller.logRequest(
id: requestId,
method: options.method, method: options.method,
url: options.uri.toString(), url: options.uri.toString(),
headers: options.headers.map((k, v) => MapEntry(k, v.toString())), headers: options.headers,
requestData: options.data, requestData: options.data,
queryParameters: queryParameters: options.queryParameters,
options.queryParameters.isNotEmpty ? options.queryParameters : null,
); );
handler.next(options);
super.onRequest(options, handler);
} }
@override @override
void onResponse(Response response, ResponseInterceptorHandler handler) { void onResponse(
final requestId = response.requestOptions.extra['yx_request_id'] as String?; Response<dynamic> response, ResponseInterceptorHandler handler,) {
final startTime = //
response.requestOptions.extra['yx_request_start_time'] as DateTime?; try {
//
// Dio RequestOptions Controller
// RequestOptions (extra)
final requestOptions = response.requestOptions;
if (requestId != null) { YxNetInspectorGlobal.logResponse(
final duration = id: requestOptions.hashCode.toString(),
startTime != null ? DateTime.now().difference(startTime) : null;
// YX Net Inspector
_controller.logResponse(
id: requestId,
statusCode: response.statusCode, statusCode: response.statusCode,
responseData: response.data, responseData: response.data,
duration: duration, responseHeaders: response.headers.map,
// logRequest
// Controller ID Duration = Now - StartTime
); );
} on Object catch (_) {
//
} }
handler.next(response);
super.onResponse(response, handler);
} }
@override @override
void onError(DioException err, ErrorInterceptorHandler handler) { void onError(DioException err, ErrorInterceptorHandler handler) {
final requestId = err.requestOptions.extra['yx_request_id'] as String?; //
final startTime = try {
err.requestOptions.extra['yx_request_start_time'] as DateTime?; final requestOptions = err.requestOptions;
if (requestId != null) { YxNetInspectorGlobal.logError(
final duration = id: requestOptions.hashCode.toString(),
startTime != null ? DateTime.now().difference(startTime) : null; error: err.message ?? err.toString(),
// YX Net Inspector
_controller.logError(
id: requestId,
error: err.message ?? '未知网络错误',
statusCode: err.response?.statusCode, statusCode: err.response?.statusCode,
duration: duration,
); );
} on Object catch (_) {
//
} }
handler.next(err);
super.onError(err, handler);
} }
} }