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, [NextLink? forward]) {
  final controller = StreamController<Response>();
  void Function()? cancelSub;
  controller.onListen = () {
    cancelSub = client.subscribe(request, controller.sink);
  };

  controller.onCancel = () {
    cancelSub?.call();
    cancelSub = null;
  };

  return controller.stream.map(
    (response) {
      if (response.data == null && response.errors == null) {
        throw WebSocketLinkServerException(
          parsedResponse: response,
          // TODO pass more data?
        );
      }
      return response;
    },
  );
}