ChannelFilter constructor

  1. @Assert('limit <= 50', 'The limit cannot be greater than 50')
const ChannelFilter({
  1. @JsonKey(toJson: concatLanguageListWithDefault, name: 'lang') @Default([]) List<Language> languages,
  2. @JsonKey(toJson: intToString) @Default(25) int limit,
  3. @JsonKey(toJson: intToString) @Default(0) int offset,
  4. @JsonKey(includeIfNull: false, toJson: channelTypeToString) ChannelType? type,
  5. @JsonKey(toJson: channelSortToStringList, includeIfNull: false) @Default([ChannelSort.organization]) List<ChannelSort> sort,
  6. @JsonKey(toJson: orderToString) @Default(Order.ascending) Order order,
  7. @JsonKey(name: 'org', toJson: organizationToString, includeIfNull: false) Organization? organization,
})

Filter the results returns by the Holodex API channel endpoints

Implementation

@Assert('limit <= 50', 'The limit cannot be greater than 50')
const factory ChannelFilter({
  /// List of Language enum to filter channels/clips. Official streams do not follow this parameter
  @JsonKey(toJson: concatLanguageListWithDefault, name: 'lang')
  @Default([])
  List<Language> languages,

  /// Result limit. Max of 50.
  @JsonKey(toJson: intToString) @Default(25) int limit,

  /// Offset results
  @JsonKey(toJson: intToString) @Default(0) int offset,

  /// Type of Channel, whether it's a vtuber or a subber. Leave unset to query all.
  @JsonKey(includeIfNull: false, toJson: channelTypeToString)
  ChannelType? type,

  /// Column to sort on
  @JsonKey(toJson: channelSortToStringList, includeIfNull: false)
  @Default([ChannelSort.organization])
  List<ChannelSort> sort,

  /// ASC or DESC order, default asc.
  @JsonKey(toJson: orderToString) @Default(Order.ascending) Order order,

  /// If set, filter for a Vtuber belonging to a specific org
  @JsonKey(name: 'org', toJson: organizationToString, includeIfNull: false)
  Organization? organization,
}) = _ChannelFilter;