getStreamOptions function

StreamOptions getStreamOptions(
  1. StreamSettings stream
)

Implementation

StreamOptions getStreamOptions(StreamSettings stream) {
  final options = StreamOptions(type: stream.network);

  switch (stream.network) {
    case StreamNetwork.raw:
      final raw = stream.rawSettings ?? RawSettings();
      final header = raw.header;
      if (header is HttpSettingsHeaders) {
        options.path = header.request.path.firstOrNull;
        options.host = searchHost(header.request.headers);
        options.headerType = 'http';
      }
      break;

    case StreamNetwork.kcp:
      final kcp = stream.kcpSettings ?? KcpSettings();
      final header = kcp.header ?? KcpHeaders();

      options.headerType = $KcpHeaderTypeEnum.encode(header.type);
      options.seed = kcp.seed;

      break;

    case StreamNetwork.ws:
      final ws = stream.wsSettings ?? WsSettings();

      options.path = ws.path;
      options.host = ws.host ?? searchHost(ws.headers);

      break;

    case StreamNetwork.grpc:
      final grpc = stream.grpcSettings ?? GrpcSettings();

      options.serviceName = grpc.serviceName;
      options.authority = grpc.authority;

      if (grpc.multiMode) {
        options.mode = 'multi';
      }
      break;

    case StreamNetwork.httpUpgrade:
      final http = stream.httpUpgradeSettings ?? HttpUpgradeSettings();
      options.path = http.path;
      options.host = http.host ?? searchHost(http.headers);
      break;

    case StreamNetwork.xhttp:
      final xhttp = stream.xhttpSettings ?? XHttpSettings();
      options.path = xhttp.path;
      options.host = xhttp.host ?? searchHost(xhttp.headers);
      options.mode = $XHttpModeEnum.encode(xhttp.mode);
      break;

    default:
      break;
  }

  return options;
}