parseStreamSetting function

StreamSettings parseStreamSetting(
  1. TransferOptions options
)

Implementation

StreamSettings parseStreamSetting(TransferOptions options) {
  final stream = StreamSettings(
    network: options.type ?? StreamNetwork.raw,
    security: options.security ?? StreamSecurity.none,
  );

  switch (stream.network) {
    case StreamNetwork.raw:
      stream.rawSettings = RawSettings(
        header:
            $HeaderTypeEnum.decode(options.headerType, HeadersType.none) ==
                HeadersType.none
            ? NoneSettingsHeaders()
            : HttpSettingsHeaders(
                request: HttpRequest(
                  path: (options.path == null || options.path!.isEmpty)
                      ? []
                      : [options.path!],
                  headers: <String, List<String>>{
                    if (options.host != null) 'host': [options.host ?? ''],
                  },
                ),
              ),
      );
      break;

    case StreamNetwork.kcp:
      stream.kcpSettings = KcpSettings(
        header: KcpHeaders(
          type: $KcpHeaderTypeEnum.decode(
            options.headerType,
            KcpHeaderType.none,
          ),
        ),
        seed: options.seed,
      );
      break;

    case StreamNetwork.ws:
      stream.wsSettings = WsSettings(path: options.path, host: options.host);
      break;

    case StreamNetwork.grpc:
      stream.grpcSettings = GrpcSettings(
        serviceName: options.serviceName ?? '',
        authority: options.authority ?? '',
        multiMode: options.mode == 'multi',
      );
      break;

    case StreamNetwork.httpUpgrade:
      stream.httpUpgradeSettings = HttpUpgradeSettings(
        path: options.path,
        host: options.host,
      );
      break;

    case StreamNetwork.xhttp:
      stream.xhttpSettings = XHttpSettings(
        path: options.path,
        host: options.host,
        mode: $XHttpModeEnum.decode(options.mode, XHttpMode.auto),
      );
      break;

    default:
      break;
  }

  return stream;
}