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