mirror of
https://github.com/wanghongenpin/proxypin.git
synced 2026-03-15 04:23:17 +08:00
Enhance request and response handling to support null values and improve breakpoint execution logic
This commit is contained in:
@@ -36,6 +36,7 @@ class RequestBreakpointInterceptor extends Interceptor {
|
||||
|
||||
return completer.future.then((req) {
|
||||
if (req == null) {
|
||||
logger.d('Request ${request.requestId} was resumed null, aborting request');
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -329,14 +329,20 @@ void registerMethodHandler() {
|
||||
}
|
||||
|
||||
if (call.method == 'resumeRequest') {
|
||||
var request = HttpRequest.fromJson(jsonDecode(jsonEncode(call.arguments['request'])));
|
||||
var request = call.arguments['request'] == null
|
||||
? null
|
||||
: HttpRequest.fromJson(jsonDecode(jsonEncode(call.arguments['request'])));
|
||||
RequestBreakpointInterceptor.instance.resumeRequest(call.arguments['requestId'], request);
|
||||
return 'done';
|
||||
}
|
||||
|
||||
if (call.method == 'resumeResponse') {
|
||||
var response = HttpResponse.fromJson(jsonDecode(jsonEncode(call.arguments['response'])));
|
||||
response.requestId = call.arguments['requestId'];
|
||||
var response = call.arguments['response'] == null
|
||||
? null
|
||||
: HttpResponse.fromJson(jsonDecode(jsonEncode(call.arguments['response'])));
|
||||
if (response != null) {
|
||||
response.requestId = call.arguments['requestId'];
|
||||
}
|
||||
RequestBreakpointInterceptor.instance.resumeResponse(call.arguments['requestId'], response);
|
||||
return 'done';
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ class _BreakpointExecutorState extends State<BreakpointExecutor> {
|
||||
onExecuteRequest: (newRequest) async {
|
||||
await DesktopMultiWindow.invokeMethod(0, 'resumeRequest', {
|
||||
'requestId': widget.requestId,
|
||||
'request': newRequest.toJson(),
|
||||
'request': newRequest?.toJson(),
|
||||
});
|
||||
if (widget.windowId != null) {
|
||||
WindowController.fromWindowId(widget.windowId!).close();
|
||||
@@ -65,7 +65,7 @@ class _BreakpointExecutorState extends State<BreakpointExecutor> {
|
||||
onExecuteResponse: (newResponse) async {
|
||||
await DesktopMultiWindow.invokeMethod(0, 'resumeResponse', {
|
||||
'requestId': widget.requestId,
|
||||
'response': newResponse.toJson(),
|
||||
'response': newResponse?.toJson(),
|
||||
});
|
||||
if (widget.windowId != null) {
|
||||
WindowController.fromWindowId(widget.windowId!).close();
|
||||
|
||||
@@ -47,8 +47,8 @@ class RequestEditor extends StatefulWidget {
|
||||
final WindowController? windowController;
|
||||
final HttpRequest? request;
|
||||
final RequestEditorSource source;
|
||||
final Function(HttpRequest request)? onExecuteRequest;
|
||||
final Function(HttpResponse response)? onExecuteResponse;
|
||||
final Function(HttpRequest? request)? onExecuteRequest;
|
||||
final Function(HttpResponse? response)? onExecuteResponse;
|
||||
final HttpResponse? response;
|
||||
|
||||
const RequestEditor({
|
||||
@@ -78,6 +78,7 @@ class RequestEditorState extends State<RequestEditor> {
|
||||
HttpResponse? response;
|
||||
|
||||
bool showCURLDialog = false;
|
||||
bool executed = false;
|
||||
|
||||
AppLocalizations get localizations => AppLocalizations.of(context)!;
|
||||
|
||||
@@ -125,6 +126,16 @@ class RequestEditorState extends State<RequestEditor> {
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
if ((widget.source == RequestEditorSource.breakpointRequest ||
|
||||
widget.source == RequestEditorSource.breakpointResponse) &&
|
||||
!executed) {
|
||||
if (widget.source == RequestEditorSource.breakpointRequest) {
|
||||
widget.onExecuteRequest?.call(null);
|
||||
} else {
|
||||
widget.onExecuteResponse?.call(null);
|
||||
}
|
||||
}
|
||||
|
||||
HardwareKeyboard.instance.removeHandler(onKeyEvent);
|
||||
responseChange.dispose();
|
||||
super.dispose();
|
||||
@@ -162,6 +173,20 @@ class RequestEditorState extends State<RequestEditor> {
|
||||
},
|
||||
icon: Icon(icon),
|
||||
label: Text(buttonText)),
|
||||
if (widget.source == RequestEditorSource.breakpointRequest ||
|
||||
widget.source == RequestEditorSource.breakpointResponse)
|
||||
TextButton.icon(
|
||||
onPressed: () {
|
||||
// ignore breakpoint
|
||||
if (widget.source == RequestEditorSource.breakpointRequest) {
|
||||
widget.onExecuteRequest?.call(null);
|
||||
} else {
|
||||
widget.onExecuteResponse?.call(null);
|
||||
}
|
||||
widget.windowController?.close();
|
||||
},
|
||||
icon: const Icon(Icons.cancel),
|
||||
label: Text(localizations.cancel)),
|
||||
const SizedBox(width: 10)
|
||||
],
|
||||
),
|
||||
@@ -246,6 +271,7 @@ class RequestEditorState extends State<RequestEditor> {
|
||||
}
|
||||
|
||||
void executeBreakpoint() {
|
||||
executed = true;
|
||||
if (widget.source == RequestEditorSource.breakpointRequest) {
|
||||
var currentState = requestLineKey.currentState!;
|
||||
var headers = requestKey.currentState?.getHeaders();
|
||||
|
||||
Reference in New Issue
Block a user