request method

  1. @override
Stream<Response> request(
  1. Request request, [
  2. NextLink? forward
])

A function called when a request reaches this Link

Implementation

@override
Stream<Response> request(Request request, [forward]) async* {
  final dio.Response<Map<String, dynamic>> dioResponse =
      await _executeDioRequest(
    request: request,
    headers: <String, String>{
      dio.Headers.acceptHeader: "*/*",
      dio.Headers.contentTypeHeader: dio.Headers.jsonContentType,
      ...defaultHeaders,
      ..._getHttpLinkHeaders(request),
    },
    isQuery: request.isQuery,
  );

  if (dioResponse.statusCode! >= 300 ||
      (dioResponse.data!["data"] == null &&
          dioResponse.data!["errors"] == null)) {
    throw DioLinkServerException(
      response: dioResponse,
      parsedResponse: _parseDioResponse(dioResponse),
      statusCode: dioResponse.statusCode,
    );
  }

  final gqlResponse = _parseDioResponse(dioResponse);
  yield Response(
    data: gqlResponse.data,
    errors: gqlResponse.errors,
    response: gqlResponse.response,
    context: _updateResponseContext(gqlResponse, dioResponse),
  );
}