parseStreamSetting function
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;
}