diff --git a/lib/domain/dart_rss.dart b/lib/domain/dart_rss.dart index 9017a27..5e5531a 100644 --- a/lib/domain/dart_rss.dart +++ b/lib/domain/dart_rss.dart @@ -1,8 +1,6 @@ import 'package:dart_rss/dart_rss.dart'; import 'package:http/http.dart' as http; -import 'package:dart_rss/domain/atom_feed.dart'; import 'package:dart_rss/domain/rss1_feed.dart'; -import 'package:dart_rss/domain/rss_feed.dart'; import 'package:xml/xml.dart' as xml; import 'package:intl/intl.dart'; @@ -142,7 +140,7 @@ class WebFeed { : rssRefs.first.getAttribute('version')?.contains('2'); xmlns = feedRefs.isEmpty ? false - : feedRefs.first.getAttribute('xmlns')?.toLowerCase()?.contains('atom'); + : feedRefs.first.getAttribute('xmlns')?.toLowerCase().contains('atom'); if (rdfRefs.isNotEmpty) { return RssVersion.RSS1; diff --git a/lib/domain/media/media.dart b/lib/domain/media/media.dart index f108493..c8f8f4c 100644 --- a/lib/domain/media/media.dart +++ b/lib/domain/media/media.dart @@ -107,19 +107,19 @@ class Media { community: Community.parse(findElementOrNull(element, 'media:community')), comments: findElementOrNull(element, 'media:comments') ?.findElements('media:comment') - ?.map((e) => e.text) - ?.toList() ?? + .map((e) => e.text) + .toList() ?? [], embed: Embed.parse(findElementOrNull(element, 'media:embed')), responses: findElementOrNull(element, 'media:responses') ?.findElements('media:response') - ?.map((e) => e.text) - ?.toList() ?? + .map((e) => e.text) + .toList() ?? [], backLinks: findElementOrNull(element, 'media:backLinks') ?.findElements('media:backLink') - ?.map((e) => e.text) - ?.toList() ?? + .map((e) => e.text) + .toList() ?? [], status: Status.parse(findElementOrNull(element, 'media:status')), prices: element @@ -131,8 +131,8 @@ class Media { rights: Rights.parse(findElementOrNull(element, 'media:rights')), scenes: findElementOrNull(element, 'media:scenes') ?.findElements('media:scene') - ?.map((e) => Scene.parse(e)) - ?.toList() ?? + .map((e) => Scene.parse(e)) + .toList() ?? [], ); } diff --git a/lib/domain/rss_item_itunes.dart b/lib/domain/rss_item_itunes.dart index 89e5def..dc7dc57 100644 --- a/lib/domain/rss_item_itunes.dart +++ b/lib/domain/rss_item_itunes.dart @@ -37,26 +37,28 @@ class RssItemItunes { }); factory RssItemItunes.parse(XmlElement element) { - final episodeStr = findElementOrNull(element, 'itunes:episode')?.text?.trim(); - final seasonStr = findElementOrNull(element, 'itunes:season')?.text?.trim(); - final durationStr = findElementOrNull(element, 'itunes:duration')?.text?.trim(); + final episodeStr = + findElementOrNull(element, 'itunes:episode')?.text.trim(); + final seasonStr = findElementOrNull(element, 'itunes:season')?.text.trim(); + final durationStr = + findElementOrNull(element, 'itunes:duration')?.text.trim(); return RssItemItunes( - title: findElementOrNull(element, 'itunes:title')?.text?.trim(), + title: findElementOrNull(element, 'itunes:title')?.text.trim(), episode: episodeStr == null ? null : int.tryParse(episodeStr), season: seasonStr == null ? null : int.tryParse(seasonStr), duration: durationStr == null ? null : parseDuration(durationStr), episodeType: newRssItunesEpisodeType( findElementOrNull(element, 'itunes:episodeType')), - author: findElementOrNull(element, 'itunes:author')?.text?.trim(), - summary: findElementOrNull(element, 'itunes:summary')?.text?.trim(), + author: findElementOrNull(element, 'itunes:author')?.text.trim(), + summary: findElementOrNull(element, 'itunes:summary')?.text.trim(), explicit: parseBoolLiteral(element, 'itunes:explicit'), - subtitle: findElementOrNull(element, 'itunes:subtitle')?.text?.trim(), + subtitle: findElementOrNull(element, 'itunes:subtitle')?.text.trim(), keywords: findElementOrNull(element, 'itunes:keywords') ?.text - ?.split(',') - ?.map((keyword) => keyword.trim()) - ?.toList() ?? + .split(',') + .map((keyword) => keyword.trim()) + .toList() ?? const [], image: RssItunesImage.parse(findElementOrNull(element, 'itunes:image')), category: RssItunesCategory.parse( diff --git a/lib/domain/rss_itunes.dart b/lib/domain/rss_itunes.dart index e21aded..1b7028a 100644 --- a/lib/domain/rss_itunes.dart +++ b/lib/domain/rss_itunes.dart @@ -41,17 +41,17 @@ class RssItunes { factory RssItunes.parse(XmlElement element) { final categories = findAllDirectElementsOrNull(element, 'itunes:category'); return RssItunes( - author: findElementOrNull(element, 'itunes:author')?.text?.trim(), - summary: findElementOrNull(element, 'itunes:summary')?.text?.trim(), + author: findElementOrNull(element, 'itunes:author')?.text.trim(), + summary: findElementOrNull(element, 'itunes:summary')?.text.trim(), explicit: parseBoolLiteral(element, 'itunes:explicit'), - title: findElementOrNull(element, 'itunes:title')?.text?.trim(), - subtitle: findElementOrNull(element, 'itunes:subtitle')?.text?.trim(), + title: findElementOrNull(element, 'itunes:title')?.text.trim(), + subtitle: findElementOrNull(element, 'itunes:subtitle')?.text.trim(), owner: RssItunesOwner.parse(findElementOrNull(element, 'itunes:owner')), keywords: findElementOrNull(element, 'itunes:keywords') ?.text - ?.split(',') - ?.map((keyword) => keyword.trim()) - ?.toList() ?? + .split(',') + .map((keyword) => keyword.trim()) + .toList() ?? const [], image: RssItunesImage.parse(findElementOrNull(element, 'itunes:image')), categories: @@ -59,10 +59,9 @@ class RssItunes { const [], type: newRssItunesType(findElementOrNull(element, 'itunes:type')), newFeedUrl: - findElementOrNull(element, 'itunes:new-feed-url')?.text?.trim(), + findElementOrNull(element, 'itunes:new-feed-url')?.text.trim(), block: parseBoolLiteral(element, 'itunes:block'), complete: parseBoolLiteral(element, 'itunes:complete'), ); } } - diff --git a/lib/domain/rss_itunes_category.dart b/lib/domain/rss_itunes_category.dart index df39050..402027c 100644 --- a/lib/domain/rss_itunes_category.dart +++ b/lib/domain/rss_itunes_category.dart @@ -22,7 +22,7 @@ class RssItunesCategory { category: element.getAttribute('text')?.trim(), subCategories: subCategories ?.map((ele) => ele.getAttribute('text')?.trim()) - ?.toList() ?? + .toList() ?? [], ); } diff --git a/lib/domain/rss_itunes_owner.dart b/lib/domain/rss_itunes_owner.dart index 72e2d69..367cb3e 100644 --- a/lib/domain/rss_itunes_owner.dart +++ b/lib/domain/rss_itunes_owner.dart @@ -11,8 +11,8 @@ class RssItunesOwner { static RssItunesOwner? parse(XmlElement? element) { if (element == null) return null; return RssItunesOwner( - name: findElementOrNull(element, 'itunes:name')?.text?.trim(), - email: findElementOrNull(element, 'itunes:email')?.text?.trim(), + name: findElementOrNull(element, 'itunes:name')?.text.trim(), + email: findElementOrNull(element, 'itunes:email')?.text.trim(), ); } } diff --git a/lib/util/helpers.dart b/lib/util/helpers.dart index 2982959..f567595 100644 --- a/lib/util/helpers.dart +++ b/lib/util/helpers.dart @@ -21,7 +21,7 @@ List? findAllDirectElementsOrNull(XmlElement element, String name, } bool? parseBoolLiteral(XmlElement element, String tagName) { - final v = findElementOrNull(element, tagName)?.text?.toLowerCase()?.trim(); + final v = findElementOrNull(element, tagName)?.text.toLowerCase().trim(); if (v == null) return null; return ['yes', 'true'].contains(v); } diff --git a/pubspec.yaml b/pubspec.yaml index 70808d3..3ef744e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,9 +1,9 @@ name: dart_rss -version: 2.0.1 +version: 3.0.0 description: dart-rss is a rss parser for RSS1.0/RSS2.0/Atom. It also support Dublin-Core, Content, Syndication additional modules. This libary is forked from webfeed(https://github.com/witochandra/webfeed). homepage: https://github.com/sudame/dart-rss environment: - sdk: ">=2.12.0-259.9.beta <3.0.0" + sdk: ">=3.0.0 <4.0.0" dependencies: xml: ^5.0.2 http: ^0.13.0 @@ -12,4 +12,3 @@ dependencies: dev_dependencies: test: ^1.16.4 pedantic: ^1.10.0 - diff --git a/test/atom_test.dart b/test/atom_test.dart index 6bdd203..87610d4 100644 --- a/test/atom_test.dart +++ b/test/atom_test.dart @@ -11,7 +11,9 @@ void main() { try { AtomFeed.parse(xmlString); fail('Should throw Argument Error'); - } on ArgumentError {} + } on ArgumentError { + // do nothing + } }); test('parse Atom.xml', () { diff --git a/test/rss_test.dart b/test/rss_test.dart index 648416a..34b5e03 100644 --- a/test/rss_test.dart +++ b/test/rss_test.dart @@ -13,7 +13,9 @@ void main() { try { RssFeed.parse(xmlString); fail('Should throw Argument Error'); - } on ArgumentError {} + } on ArgumentError { + // do nothing + } }); test('parse RSS.xml', () { final xmlString = File('test/xml/RSS.xml').readAsStringSync(); @@ -350,10 +352,10 @@ void main() { expect(item.itunes!.title, 'awesome title'); expect(item.itunes!.block, false); }); - test("parse RSS-PodcastIndex-R1.xml", () { - var xmlString = new File("test/xml/RSS-PodcastIndex-R1.xml").readAsStringSync(); + test('parse RSS-PodcastIndex-R1.xml', () { + var xmlString = File('test/xml/RSS-PodcastIndex-R1.xml').readAsStringSync(); - var feed = new RssFeed.parse(xmlString); + var feed = RssFeed.parse(xmlString); expect(feed.title, 'Podcasting 2.0 Namespace Example'); expect(