searchResponse function Null safety

Future<Response> searchResponse(
  1. {String? title,
  2. int? limit,
  3. int? offset,
  4. List<String>? authors,
  5. List<String>? artists,
  6. int? year,
  7. List<String>? includedTags,
  8. TagsMode? includedTagsMode,
  9. List<String>? excludedTags,
  10. TagsMode? excludedTagsMode,
  11. List<MangaStatus>? status,
  12. List<LanguageCodes>? originalLanguage,
  13. List<LanguageCodes>? excludedOriginalLanguages,
  14. List<LanguageCodes>? availableTranslatedLanguage,
  15. List<PublicDemographic>? publicationDemographic,
  16. List<String>? ids,
  17. List<ContentRating>? contentRating,
  18. String? createdAtSince,
  19. String? updatedAtSince,
  20. List<String>? includes,
  21. String? group,
  22. Map<String, dynamic>? order,
  23. bool? hasAvailableChapters}
)

Implementation

Future<http.Response> searchResponse({
  String? title,
  int? limit,
  int? offset,
  List<String>? authors,
  List<String>? artists,
  int? year,
  List<String>? includedTags,
  TagsMode? includedTagsMode,
  List<String>? excludedTags,
  TagsMode? excludedTagsMode,
  List<MangaStatus>? status,
  List<LanguageCodes>? originalLanguage,
  List<LanguageCodes>? excludedOriginalLanguages,
  List<LanguageCodes>? availableTranslatedLanguage,
  List<PublicDemographic>? publicationDemographic,
  List<String>? ids,
  List<ContentRating>? contentRating,
  String? createdAtSince,
  String? updatedAtSince,
  List<String>? includes,
  String? group,
  Map<String, dynamic>? order,
  bool? hasAvailableChapters,
}) async {
  var unencodedPath = '/manga';
  var _title = title != null ? '&title=$title' : '';
  var _authors = '';
  if (authors != null) {
    authors.forEach((element) {
      _authors = _authors + '&authors[]=$element';
    });
  }
  var _limit = limit != null ? '&limit=$limit' : '';
  var _offset = offset != null ? '&offset=$offset' : '';
  var _artists = '';
  if (artists != null) {
    artists.forEach((element) {
      _artists = _artists + '&artists[]=$element';
    });
  }
  var _year = year != null ? '&year=$year' : '';
  var _includedTags = '';
  if (includedTags != null) {
    includedTags.forEach((element) {
      _includedTags = _includedTags + '&includedTags[]=$element';
    });
  }
  var _publicationDemographic = '';
  if (publicationDemographic != null) {
    publicationDemographic.forEach((element) {
      _publicationDemographic = _publicationDemographic +
          '&publicationDemographic[]=${EnumUtils.parsePublicDemographicFromEnum(element)}';
    });
  }
  var _includedTagsMode = '';
  if (includedTagsMode != null) {
    _includedTagsMode = EnumUtils.parseTagModeFromEnum(includedTagsMode);
  }
  var _excludedTags = '';
  if (excludedTags != null) {
    excludedTags.forEach((element) {
      _excludedTags = _excludedTags + '&excludedTags[]=$element';
    });
  }
  var _excludedTagsMode = '';
  if (excludedTagsMode != null) {
    _excludedTagsMode = EnumUtils.parseTagModeFromEnum(excludedTagsMode);
  }
  var _status = '';
  if (status != null) {
    status.forEach((element) {
      _status =
          _status + '&status[]=${EnumUtils.parseMangaStatusFromEnum(element)}';
    });
  }

  var _originalLanguage = '';
  if (originalLanguage != null) {
    originalLanguage.forEach((element) {
      _originalLanguage = _originalLanguage +
          '&originalLanguage[]=${EnumUtils.parseLanguageCodeFromEnum(element)}';
    });
  }
  var _excludedOriginalLanguage = '';
  if (excludedOriginalLanguages != null) {
    excludedOriginalLanguages.forEach((element) {
      _excludedOriginalLanguage = _excludedOriginalLanguage +
          '&excludedOriginalLanguage[]=${EnumUtils.parseLanguageCodeFromEnum(element)}';
    });
  }
  var _availableTranslatedLanguage = '';
  if (availableTranslatedLanguage != null) {
    availableTranslatedLanguage.forEach((element) {
      _availableTranslatedLanguage = _availableTranslatedLanguage +
          '&availableTranslatedLanguage[]=${EnumUtils.parseLanguageCodeFromEnum(element)}';
    });
  }

  var _ids = '';
  if (ids != null) {
    ids.forEach((element) {
      _ids = _ids + '&ids[]=$element';
    });
  }
  var _contentRating = '';
  if (contentRating != null) {
    contentRating.forEach((element) {
      _contentRating = _contentRating +
          '&contentRating[]=${EnumUtils.parseContentRatingFromEnum(element)}';
    });
  }
  var _includes = '';
  if (includes != null) {
    includes.forEach((element) {
      _includes = _includes + '&included[]=$element';
    });
  }
  var _createdAtSince =
      createdAtSince != null ? '&createdAtSince=$createdAtSince' : '';
  var _updatedAtSince =
      updatedAtSince != null ? '&updatedAtSince=$updatedAtSince' : '';
  var _group = group != null ? '&group=$group' : '';
  var _order = order != null
      ? '&order[${order.entries.first}]=${order[order.entries.first]}'
      : '&order[latestUploadedChapter]=desc';
  final url =
      'https://$authority$unencodedPath?$_title$_limit$_offset$_authors$_artists$_year$_includedTags$_includedTagsMode$_excludedTags$_excludedTagsMode$_status$_originalLanguage$_excludedOriginalLanguage$_availableTranslatedLanguage$_publicationDemographic$_ids$_contentRating$_createdAtSince$_updatedAtSince$_includes$_group$_order';
  var response = await http.get(Uri.parse(url),
      headers: {HttpHeaders.contentTypeHeader: 'application/json'});
  return response;
}