buildServer method
Future<void>
buildServer(
- BuildInfoDto buildInfoDto, {
- required void onStart(
- EventMessageDto startMessage
- required void onData(
- CommandOutputDto commandOutput
- required void onDone(
- EventMessageDto startMessage
- void onError(
- Object error,
- StackTrace stackTrace
POST /servers/build
Implementation
Future<void> buildServer(
BuildInfoDto buildInfoDto, {
required void Function(EventMessageDto startMessage) onStart,
required void Function(CommandOutputDto commandOutput) onData,
required void Function(EventMessageDto doneMessage) onDone,
void Function(Object error, StackTrace stackTrace)? onError,
}) async {
try {
Stream<String> sseStream = await serverSse.request(
'/build',
queryParameters: buildInfoDto.toJson(),
);
void Function(String event, Map<String, dynamic> data) onEvent =
(String event, Map<String, dynamic> data) {
if (event == EventType.START) {
onStart(EventMessageDto.fromJson(data));
} else if (event == EventType.DATA) {
onData(CommandOutputDto.fromJson(data));
} else if (event == EventType.DONE) {
onDone(EventMessageDto.fromJson(data));
}
};
sseStream.listen(
(data) => SseClient.parse(data, onEvent),
onError: (error, stackTrace) {
onError?.call(_normalizeError(error), stackTrace);
},
cancelOnError: true,
);
} catch (error, stackTrace) {
final normalized = _normalizeError(error);
if (onError != null) {
onError(normalized, stackTrace);
return;
}
if (identical(normalized, error)) rethrow;
Error.throwWithStackTrace(normalized, stackTrace);
}
}