pushServer method

Future<void> pushServer(
  1. String serverId, {
  2. required void onStart(
    1. PushStartDto pushStart
    ),
  3. required void onUpload(
    1. PushUploadDto pushUpload
    ),
  4. required void onDone(
    1. ServerIdDto serverId
    ),
  5. void onError(
    1. Object error,
    2. 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;
  }
}