parseFeed method

  1. @override
Future<List<FeedEntryModel>> parseFeed()
override

Implementation

@override
Future<List<FeedEntryModel>> parseFeed() async {
  List<FeedEntryModel> feedEntryModels = [];
  Response resp = await http.get(Uri.parse("$id.rss"));
  if (resp.statusCode >= 300) {
    return [];
  } else {
    final rssFeed = RssFeed.parse(resp.body);
    for (RssItem item in rssFeed.items) {
      String cleanUpDescription = item.description!
          .replaceAll("<p>", "")
          .replaceAll("</p>",
              ""); // Needed to rm the p tags so we can check the contents
      if (cleanUpDescription.startsWith(trigger)) {
        DateFormat inputFormat = DateFormat('dd MMM yyyy hh:mm:ss +Z',
            "en_US"); // For reasons unknown, the local needs to be present for things to work (without it only works in the example app, idk why)
        String afterDayRm = item.pubDate!.split(", ")[1];
        DateTime dateTime = inputFormat.parse(afterDayRm);
        feedEntryModels.add(FeedEntryModel(cleanUpDescription,
            title: item.pubDate!,
            body: item.description!,
            source: item.link!,
            dateTime: dateTime));
      }
    }
    return feedEntryModels;
  }
}