Files
proxypin/lib/network/components/interceptor.dart
2025-10-25 01:49:22 +08:00

33 lines
960 B
Dart

import 'package:proxypin/network/channel/host_port.dart';
import 'package:proxypin/network/http/http.dart';
/// A Interceptor that can intercept and modify the request and response.
/// @author Hongen Wang
abstract class Interceptor {
/// The priority of the interceptor.
int get priority => 0;
Future<HostAndPort> preConnect(HostAndPort hostAndPort) async {
return hostAndPort;
}
/// Called before the request is sent to the server.
Future<HttpResponse?> execute(HttpRequest request) async {
return null;
}
/// Called before the request is sent to the server.
Future<HttpRequest?> onRequest(HttpRequest request) async {
return request;
}
/// Called after the response is received from the server.
Future<HttpResponse?> onResponse(HttpRequest request, HttpResponse response) async {
return response;
}
Future<void> onError(HttpRequest? request, dynamic error, StackTrace? stackTrace) async {
return;
}
}