pushServer method
Future<void>
pushServer(
- String serverId, {
- required void onStart(
- PushStartDto pushStart
- required void onUpload(
- PushUploadDto pushUpload
- required void onDone(
- ServerIdDto serverId
- void onError(
- Object error,
- StackTrace stackTrace
POST /servers/{serverId}/push
Implementation
Future<void> pushServer(
String serverId, {
required void Function(PushStartDto pushStart) onStart,
required void Function(PushUploadDto pushUpload) onUpload,
required void Function(ServerIdDto serverId) onDone,
void Function(Object error, StackTrace stackTrace)? onError,
}) async {
try {
Stream<String> sseStream = await serverSse.request('/$serverId/push');
void Function(String event, Map<String, dynamic> data) onEvent =
(String event, Map<String, dynamic> data) {
if (event == EventType.START) {
onStart(PushStartDto.fromJson(data));
} else if (event == EventType.DATA) {
onUpload(PushUploadDto.fromJson(data));
} else if (event == EventType.DONE) {
onDone(ServerIdDto.fromJson(data));
}
};
sseStream.listen(
(data) => SseClient.parse(data, onEvent),
onError: (error, stackTrace) {
onError?.call(error, stackTrace);
},
cancelOnError: true,
);
} catch (error, stackTrace) {
if (onError != null) {
onError(error, stackTrace);
return;
}
rethrow;
}
}