interceptRequestIfNeeded method
Pauses for request editing when a matching breakpoint rule exists.
Implementation
Future<InfospectBreakpointResult?> interceptRequestIfNeeded({
required String method,
required String endpoint,
required String uri,
required Map<String, dynamic> headers,
required Map<String, dynamic> queryParameters,
required dynamic body,
int? requestId,
}) async {
final match = breakpointManager.findMatch(
InfospectBreakpointMatchContext(
method: method,
endpoint: endpoint,
queryParameters: queryParameters,
requestHeaders: headers,
requestBody: body,
isResponsePhase: false,
),
);
if (match == null || !match.breakOnRequest) return null;
if (requestId != null) {
markBreakpointTrace(requestId: requestId, requestHit: true);
}
final payload = InfospectBreakpointPayload(
method: method,
uri: uri,
endpoint: endpoint,
headers: InfospectBreakpointManager.stringifyMap(headers),
queryParameters: InfospectBreakpointManager.stringifyMap(queryParameters),
body: InfospectBreakpointManager.stringifyBody(body),
);
final result = await _breakpointPresenter.present(
phase: InfospectBreakpointPhase.request,
payload: payload,
);
if (requestId != null && !result.aborted) {
final edited = result.payload != payload;
if (edited) {
markBreakpointTrace(requestId: requestId, requestEdited: true);
}
}
return result;
}