onRequestWillBeSent method

void onRequestWillBeSent(
  1. EngineContext context,
  2. String requestId,
  3. VoltronHttpRequest request
)

on network request will be sent to server invoke width HttpRequest more details, see https://chromedevtools.github.io/devtools-protocol/tot/Network/#event-requestWillBeSent

Implementation

void onRequestWillBeSent(EngineContext context, String requestId, VoltronHttpRequest request) {
  final Map<String, String> requestHeader = request.getHeaders().map((key, value) {
    if (value is List) {
      return MapEntry(key, value.join(';'));
    }
    return MapEntry(key, value.toString());
  });
  final postData = request.body;
  final entryMap = {kHttpRequestBytes: base64Encode(utf8.encode(postData))};
  final requestMap = {
    kHttpRequestUrl: request.url,
    kHttpRequestMethod: request.method.toUpperCase(),
    kHttpRequestHeaders: requestHeader,
    kHttpRequestPostData: postData,
    kHttpRequestHasPostData: postData.isNotEmpty,
    kHttpRequestPostDataEntries: [entryMap],
    kHttpRequestMixedContentType: kDefaultMixedContentType,
    kHttpRequestInitialPriority: kDefaultInitialPriority,
    kHttpRequestReferrerPolicy: kDefaultReferrerPolicy
  };
  final timeStamp = NetworkUtil.getTimeStamp();
  final defaultInitiatorMap = {"type": "other"};
  final jsonMap = {
    kHttpRequestRequestId: requestId,
    kHttpRequestLoaderId: requestId,
    kHttpRequestDocumentUrl: "",
    kHttpRequestTAG: requestMap,
    kHttpRequestTimestamp: timeStamp,
    kHttpRequestWallTime: timeStamp,
    kHttpRequestInitiator: defaultInitiatorMap,
    kHttpRequestType: kDefaultRequestType
  };
  final result = json.encode(jsonMap);
  VoltronApi.notifyRequestWillBeSent(context.engineId, requestId, result);
}