getUpcomingAndActiveBroadcast method

Future<LiveBroadcastItem> getUpcomingAndActiveBroadcast()

Implementation

Future<LiveBroadcastItem> getUpcomingAndActiveBroadcast() async {
  final List<LiveBroadcastItem> liveBroadcastList = [];

  LiveBroadcastResponse liveBroadcastResponse;

  liveBroadcastResponse =
      await list(broadcastStatus: 'upcoming', maxResults: 50);

  liveBroadcastList.addAll(liveBroadcastResponse.items);

  liveBroadcastResponse =
      await list(broadcastStatus: 'active', maxResults: 50);

  liveBroadcastList.addAll(liveBroadcastResponse.items);

  if (liveBroadcastList.isEmpty) {
    throw Exception('No existing broadcast found.');
  }

  liveBroadcastList.sort();

  return liveBroadcastList.length == 1
      ? liveBroadcastList.first
      : LiveBroadcastResponse.closestTo(liveBroadcastList);
}