From 57053a75305f659a9f73e19ee3b3e7389df78843 Mon Sep 17 00:00:00 2001 From: Omkar Dabade Date: Sun, 24 Jul 2022 14:23:20 +0530 Subject: [PATCH 1/8] dependency upgrade --- CHANGELOG.md | 3 ++ analysis_options.yaml | 56 ++++++++++++++++++------------------- lib/domain/media/media.dart | 2 +- lib/domain/rss_content.dart | 2 +- pubspec.yaml | 13 +++++---- 5 files changed, 41 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 418b28f..3b1b0a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 0.7.1 +- Dependency upgrade + ## [0.7.0](https://pub.dartlang.org/packages/webfeed/versions/0.7.0) - Null safety migration [#50](https://github.com/witochandra/webfeed/pull/50) - Parse duration if not empty [#39](https://github.com/witochandra/webfeed/pull/39) diff --git a/analysis_options.yaml b/analysis_options.yaml index d74c8fe..f000a5c 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -5,32 +5,32 @@ analyzer: dead_code: error linter: rules: - # Errors - - avoid_empty_else - - comment_references - - control_flow_in_finally - - empty_statements - - hash_and_equals - - test_types_in_equals - - throw_in_finally - - unrelated_type_equality_checks - - valid_regexps + # Errors + - avoid_empty_else + - comment_references + - control_flow_in_finally + - empty_statements + - hash_and_equals + - test_types_in_equals + - throw_in_finally + - unrelated_type_equality_checks + - valid_regexps - # Style - - avoid_init_to_null - - avoid_return_types_on_setters - - await_only_futures - - camel_case_types - - directives_ordering - - empty_constructor_bodies - - library_names - - library_prefixes - - non_constant_identifier_names - - omit_local_variable_types - - prefer_final_fields - - prefer_is_not_empty - - prefer_typing_uninitialized_variables - - slash_for_doc_comments - - type_init_formals - - unnecessary_new - - prefer_single_quotes + # Style + - avoid_init_to_null + - avoid_return_types_on_setters + - await_only_futures + - camel_case_types + - directives_ordering + - empty_constructor_bodies + - library_names + - library_prefixes + - non_constant_identifier_names + - omit_local_variable_types + - prefer_final_fields + - prefer_is_not_empty + - prefer_typing_uninitialized_variables + - slash_for_doc_comments + - type_init_formals + - unnecessary_new + - prefer_single_quotes diff --git a/lib/domain/media/media.dart b/lib/domain/media/media.dart index e95cb48..430a9a2 100644 --- a/lib/domain/media/media.dart +++ b/lib/domain/media/media.dart @@ -19,8 +19,8 @@ import 'package:webfeed/domain/media/status.dart'; import 'package:webfeed/domain/media/text.dart'; import 'package:webfeed/domain/media/thumbnail.dart'; import 'package:webfeed/domain/media/title.dart'; -import 'package:webfeed/util/xml.dart'; import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed/util/xml.dart'; import 'package:xml/xml.dart'; class Media { diff --git a/lib/domain/rss_content.dart b/lib/domain/rss_content.dart index 531c9ed..c79c564 100644 --- a/lib/domain/rss_content.dart +++ b/lib/domain/rss_content.dart @@ -17,7 +17,7 @@ class RssContent { RssContent(this.value, this.images); factory RssContent.parse(XmlElement element) { - final dynamic? content = element.text; + final content = element.text; final images = []; _imagesRegExp.allMatches(content).forEach((match) { images.add(match.group(1)!); diff --git a/pubspec.yaml b/pubspec.yaml index a094f2e..1ccb088 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,12 +1,15 @@ name: webfeed -version: 0.7.0 +version: 0.7.1 description: webfeed is a dart package for parsing RSS and Atom feeds. Media, DublinCore, iTunes, Syndication namespaces are also supported. homepage: https://github.com/witochandra/webfeed + environment: - sdk: '>=2.12.0 <3.0.0' + sdk: ">=2.17.0 <3.0.0" + dependencies: - xml: "^5.0.2" - intl: "^0.17.0" + xml: ^6.1.0 + intl: ^0.17.0 + dev_dependencies: test: ^1.3.0 - http: "^0.13.0" + http: ^0.13.4 From de7b57625b9284fea6ce0d6f8a1cb629b92576b0 Mon Sep 17 00:00:00 2001 From: Omkar Dabade Date: Sun, 24 Jul 2022 14:46:14 +0530 Subject: [PATCH 2/8] removed extra files, followed linter rules --- .github/workflows/dart.yml | 19 -- .gitignore | 45 ++++- .metadata | 45 +++++ .travis.yml | 5 - analysis_options.yaml | 59 +++--- lib/util/datetime.dart | 7 +- pubspec.lock | 369 +++++++++++++++++++++++++++++++++++++ pubspec.yaml | 7 +- test/atom_test.dart | 4 +- test/rss_test.dart | 19 +- 10 files changed, 501 insertions(+), 78 deletions(-) delete mode 100644 .github/workflows/dart.yml create mode 100644 .metadata delete mode 100644 .travis.yml create mode 100644 pubspec.lock diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml deleted file mode 100644 index cfd5a3a..0000000 --- a/.github/workflows/dart.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Dart CI - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - runs-on: ubuntu-latest - container: - image: google/dart:latest - steps: - - uses: actions/checkout@v2 - - name: Install dependencies - run: pub get - - name: Run tests - run: pub run test diff --git a/.gitignore b/.gitignore index 0a4e5a3..06d0e69 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,45 @@ -# See https://www.dartlang.org/tools/private-files.html +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ -# Files and directories created by pub +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies .packages +.pub-cache/ .pub/ -build/ -# If you're building an application, you may want to check-in your pubspec.lock -pubspec.lock +/build/ + +# Web related +lib/generated_plugin_registrant.dart -# Directory created by dartdoc -# If you don't generate documentation locally you can remove this line. -doc/api/ +# Symbolication related +app.*.symbols +# Obfuscation related +app.*.map.json .idea .dart_tool diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..39f2501 --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + channel: stable + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: android + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: ios + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: linux + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: macos + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: web + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: windows + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9d44bdf..0000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: dart -dart: - - dev -dart_task: - - test: --platform vm --reporter expanded diff --git a/analysis_options.yaml b/analysis_options.yaml index f000a5c..61b6c4d 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,36 +1,29 @@ -analyzer: - errors: - unused_import: error - unused_local_variable: error - dead_code: error +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. rules: - # Errors - - avoid_empty_else - - comment_references - - control_flow_in_finally - - empty_statements - - hash_and_equals - - test_types_in_equals - - throw_in_finally - - unrelated_type_equality_checks - - valid_regexps + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule - # Style - - avoid_init_to_null - - avoid_return_types_on_setters - - await_only_futures - - camel_case_types - - directives_ordering - - empty_constructor_bodies - - library_names - - library_prefixes - - non_constant_identifier_names - - omit_local_variable_types - - prefer_final_fields - - prefer_is_not_empty - - prefer_typing_uninitialized_variables - - slash_for_doc_comments - - type_init_formals - - unnecessary_new - - prefer_single_quotes +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/lib/util/datetime.dart b/lib/util/datetime.dart index 6b41fff..afc0622 100644 --- a/lib/util/datetime.dart +++ b/lib/util/datetime.dart @@ -9,8 +9,11 @@ DateTime? parseDateTime(dateString) { DateTime? _parseRfc822DateTime(String dateString) { try { - final num? length = dateString.length.clamp(0, rfc822DatePattern.length); - final trimmedPattern = rfc822DatePattern.substring(0, length as int?); //Some feeds use a shortened RFC 822 date, e.g. 'Tue, 04 Aug 2020' + final num length = dateString.length.clamp(0, rfc822DatePattern.length); + final trimmedPattern = rfc822DatePattern.substring( + 0, + length + as int?); //Some feeds use a shortened RFC 822 date, e.g. 'Tue, 04 Aug 2020' final format = DateFormat(trimmedPattern, 'en_US'); return format.parse(dateString); } on FormatException { diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..72900e9 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,369 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "42.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "4.3.0" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.1" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.9.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + coverage: + dependency: transitive + description: + name: coverage + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.0" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.2" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + http: + dependency: "direct dev" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.4" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.1" + intl: + dependency: "direct main" + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.12" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + node_preamble: + dependency: transitive + description: + name: node_preamble + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.0" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.1" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + shelf_static: + dependency: transitive + description: + name: shelf_static + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + source_maps: + dependency: transitive + description: + name: source_maps + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.10" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + test: + dependency: "direct dev" + description: + name: test + url: "https://pub.dartlang.org" + source: hosted + version: "1.21.4" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.12" + test_core: + dependency: transitive + description: + name: test_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.16" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + vm_service: + dependency: transitive + description: + name: vm_service + url: "https://pub.dartlang.org" + source: hosted + version: "9.3.0" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + xml: + dependency: "direct main" + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.0" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" +sdks: + dart: ">=2.17.0 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 1ccb088..f37ac3d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,8 +1,10 @@ name: webfeed -version: 0.7.1 + description: webfeed is a dart package for parsing RSS and Atom feeds. Media, DublinCore, iTunes, Syndication namespaces are also supported. homepage: https://github.com/witochandra/webfeed +version: 1.0.0 + environment: sdk: ">=2.17.0 <3.0.0" @@ -11,5 +13,6 @@ dependencies: intl: ^0.17.0 dev_dependencies: - test: ^1.3.0 + flutter_lints: ^2.0.0 + test: ^1.21.4 http: ^0.13.4 diff --git a/test/atom_test.dart b/test/atom_test.dart index 5814efc..6522d4a 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 { + print('Argument Error'); + } }); test('parse Atom.xml', () { diff --git a/test/rss_test.dart b/test/rss_test.dart index fa3d789..9125acb 100644 --- a/test/rss_test.dart +++ b/test/rss_test.dart @@ -14,7 +14,9 @@ void main() { try { RssFeed.parse(xmlString); fail('Should throw Argument Error'); - } on ArgumentError {} + } on ArgumentError { + print('Argument Error'); + } }); test('parse RSS.xml', () { var xmlString = File('test/xml/RSS.xml').readAsStringSync(); @@ -330,12 +332,13 @@ void main() { 'go,golang,open source,software,development'.split(',')); expect(feed.itunes!.owner!.name, 'Changelog Media'); expect(feed.itunes!.owner!.email, 'editors@changelog.com'); - expect( - Set.from([ - feed.itunes!.categories![0].category, - feed.itunes!.categories![1].category - ]), - ['Technology', 'Foo']); + expect({ + feed.itunes!.categories![0].category, + feed.itunes!.categories![1].category + }, [ + 'Technology', + 'Foo' + ]); for (var category in feed.itunes!.categories!) { switch (category.category) { case 'Foo': @@ -358,7 +361,7 @@ void main() { expect(item.itunes!.season, 1); expect(item.itunes!.image!.href, 'https://cdn.changelog.com/uploads/covers/go-time-original.png?v=63725770357'); - expect(item.itunes!.duration, Duration(minutes: 32, seconds: 30)); + expect(item.itunes!.duration, const Duration(minutes: 32, seconds: 30)); expect(item.itunes!.explicit, false); expect(item.itunes!.keywords, 'go,golang,open source,software,development'.split(',')); From 302b8f0b175835a8e2eb46489dde98bd1714e8fa Mon Sep 17 00:00:00 2001 From: Omkar Dabade Date: Sun, 24 Jul 2022 15:52:53 +0530 Subject: [PATCH 3/8] change in package name --- CHANGELOG.md | 43 ++++------------------- README.md | 9 ++--- example/main.dart | 2 +- lib/domain/atom_feed.dart | 14 ++++---- lib/domain/atom_item.dart | 14 ++++---- lib/domain/atom_person.dart | 2 +- lib/domain/atom_source.dart | 2 +- lib/domain/dublin_core/dublin_core.dart | 4 +-- lib/domain/itunes/itunes.dart | 14 ++++---- lib/domain/itunes/itunes_owner.dart | 2 +- lib/domain/media/community.dart | 8 ++--- lib/domain/media/embed.dart | 2 +- lib/domain/media/group.dart | 10 +++--- lib/domain/media/media.dart | 46 ++++++++++++------------- lib/domain/media/scene.dart | 2 +- lib/domain/rss_feed.dart | 16 ++++----- lib/domain/rss_image.dart | 2 +- lib/domain/rss_item.dart | 18 +++++----- lib/domain/syndication/syndication.dart | 4 +-- lib/util/xml.dart | 2 +- lib/{webfeed.dart => webfeed_plus.dart} | 0 pubspec.yaml | 8 ++--- test/atom_test.dart | 2 +- test/rss_test.dart | 8 ++--- 24 files changed, 100 insertions(+), 134 deletions(-) rename lib/{webfeed.dart => webfeed_plus.dart} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b1b0a7..13a26ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,41 +1,10 @@ -# Changelog + +## 1.0.0 +- Change in package name to "webfeed_plus" from "webfeed" +- This package is forked from [webfeed](https://github.com/witochandra/webfeed) ## 0.7.1 - Dependency upgrade -## [0.7.0](https://pub.dartlang.org/packages/webfeed/versions/0.7.0) -- Null safety migration [#50](https://github.com/witochandra/webfeed/pull/50) -- Parse duration if not empty [#39](https://github.com/witochandra/webfeed/pull/39) - -## [0.6.0](https://pub.dartlang.org/packages/webfeed/versions/0.6.0) -- Refactor util/xml.dart -- Support RDF feed -- Support Syndication namespace - -## [0.5.2](https://pub.dartlang.org/packages/webfeed/versions/0.5.2) -- Lower the xml package version constraints - -## [0.5.1](https://pub.dartlang.org/packages/webfeed/versions/0.5.1) -- Support iTunes namespace [#19](https://github.com/witochandra/webfeed/pull/19) -- Parse date strings into DateTime [#22](https://github.com/witochandra/webfeed/pull/22) -- Add created & modified into dublin core namespace [#27](https://github.com/witochandra/webfeed/pull/27) -- Upgrade xml package [#28](https://github.com/witochandra/webfeed/issues/28) -- Fix linting warnings - -## [0.4.2](https://pub.dartlang.org/packages/webfeed/versions/0.4.2) -### Fixed -- Bad import in `rss_content.dart` & `rss_source.dart` - -## [0.4.1](https://pub.dartlang.org/packages/webfeed/versions/0.4.1) -### Added -- Support `author` in RssFeed - -## [0.4.0](https://pub.dartlang.org/packages/webfeed/versions/0.4.0) -### Added -- Support for dublin core namespace -- Support enclosure in rss item -- Set minimum dart version into 2 - -## [0.3.0](https://pub.dartlang.org/packages/webfeed/versions/0.3.0) -### Added -- Support for image namespace +## 0.7.0 - 0.3.0 +- Please refer [webfeed](https://pub.dev/packages/webfeed/changelog) \ No newline at end of file diff --git a/README.md b/README.md index 01a93e4..218912d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,4 @@ -# WebFeed - -[![Build Status](https://travis-ci.org/witochandra/webfeed.svg?branch=master)](https://travis-ci.org/witochandra/webfeed) -[![Pub](https://img.shields.io/pub/v/webfeed.svg)](https://pub.dartlang.org/packages/webfeed) +# WebFeed PLus A dart package for parsing RSS and Atom feed. @@ -19,12 +16,12 @@ A dart package for parsing RSS and Atom feed. Add this line into your `pubspec.yaml` ``` -webfeed: ^0.7.0 +webfeed_plus: ^1.0.0 ``` Import the package into your dart code using: ``` -import 'package:webfeed/webfeed.dart'; +import 'package:webfeed_plus/webfeed_plus.dart'; ``` ### Example diff --git a/example/main.dart b/example/main.dart index 5ec2b7f..0ebfbfc 100644 --- a/example/main.dart +++ b/example/main.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:http/io_client.dart'; -import 'package:webfeed/webfeed.dart'; +import 'package:webfeed_plus/webfeed_plus.dart'; void main() async { final client = IOClient(HttpClient() diff --git a/lib/domain/atom_feed.dart b/lib/domain/atom_feed.dart index f48a3c0..d7d5d29 100644 --- a/lib/domain/atom_feed.dart +++ b/lib/domain/atom_feed.dart @@ -1,10 +1,10 @@ -import 'package:webfeed/domain/atom_category.dart'; -import 'package:webfeed/domain/atom_generator.dart'; -import 'package:webfeed/domain/atom_item.dart'; -import 'package:webfeed/domain/atom_link.dart'; -import 'package:webfeed/domain/atom_person.dart'; -import 'package:webfeed/util/datetime.dart'; -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/domain/atom_category.dart'; +import 'package:webfeed_plus/domain/atom_generator.dart'; +import 'package:webfeed_plus/domain/atom_item.dart'; +import 'package:webfeed_plus/domain/atom_link.dart'; +import 'package:webfeed_plus/domain/atom_person.dart'; +import 'package:webfeed_plus/util/datetime.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class AtomFeed { diff --git a/lib/domain/atom_item.dart b/lib/domain/atom_item.dart index ff9681e..4e43fbd 100644 --- a/lib/domain/atom_item.dart +++ b/lib/domain/atom_item.dart @@ -1,10 +1,10 @@ -import 'package:webfeed/domain/atom_category.dart'; -import 'package:webfeed/domain/atom_link.dart'; -import 'package:webfeed/domain/atom_person.dart'; -import 'package:webfeed/domain/atom_source.dart'; -import 'package:webfeed/domain/media/media.dart'; -import 'package:webfeed/util/datetime.dart'; -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/domain/atom_category.dart'; +import 'package:webfeed_plus/domain/atom_link.dart'; +import 'package:webfeed_plus/domain/atom_person.dart'; +import 'package:webfeed_plus/domain/atom_source.dart'; +import 'package:webfeed_plus/domain/media/media.dart'; +import 'package:webfeed_plus/util/datetime.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class AtomItem { diff --git a/lib/domain/atom_person.dart b/lib/domain/atom_person.dart index cac9457..2edcffd 100644 --- a/lib/domain/atom_person.dart +++ b/lib/domain/atom_person.dart @@ -1,4 +1,4 @@ -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class AtomPerson { diff --git a/lib/domain/atom_source.dart b/lib/domain/atom_source.dart index f5f5f56..5bd24ac 100644 --- a/lib/domain/atom_source.dart +++ b/lib/domain/atom_source.dart @@ -1,4 +1,4 @@ -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class AtomSource { diff --git a/lib/domain/dublin_core/dublin_core.dart b/lib/domain/dublin_core/dublin_core.dart index 9cdfaa2..5d43c78 100644 --- a/lib/domain/dublin_core/dublin_core.dart +++ b/lib/domain/dublin_core/dublin_core.dart @@ -1,5 +1,5 @@ -import 'package:webfeed/util/datetime.dart'; -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/util/datetime.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class DublinCore { diff --git a/lib/domain/itunes/itunes.dart b/lib/domain/itunes/itunes.dart index b8a52fa..d3050f6 100644 --- a/lib/domain/itunes/itunes.dart +++ b/lib/domain/itunes/itunes.dart @@ -1,10 +1,10 @@ -import 'package:webfeed/domain/itunes/itunes_category.dart'; -import 'package:webfeed/domain/itunes/itunes_episode_type.dart'; -import 'package:webfeed/domain/itunes/itunes_image.dart'; -import 'package:webfeed/domain/itunes/itunes_owner.dart'; -import 'package:webfeed/domain/itunes/itunes_type.dart'; -import 'package:webfeed/util/iterable.dart'; -import 'package:webfeed/util/xml.dart'; +import 'package:webfeed_plus/domain/itunes/itunes_category.dart'; +import 'package:webfeed_plus/domain/itunes/itunes_episode_type.dart'; +import 'package:webfeed_plus/domain/itunes/itunes_image.dart'; +import 'package:webfeed_plus/domain/itunes/itunes_owner.dart'; +import 'package:webfeed_plus/domain/itunes/itunes_type.dart'; +import 'package:webfeed_plus/util/iterable.dart'; +import 'package:webfeed_plus/util/xml.dart'; import 'package:xml/xml.dart'; class Itunes { diff --git a/lib/domain/itunes/itunes_owner.dart b/lib/domain/itunes/itunes_owner.dart index 0a40578..3a10bf5 100644 --- a/lib/domain/itunes/itunes_owner.dart +++ b/lib/domain/itunes/itunes_owner.dart @@ -1,4 +1,4 @@ -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class ItunesOwner { diff --git a/lib/domain/media/community.dart b/lib/domain/media/community.dart index 9c49c22..d5c9b18 100644 --- a/lib/domain/media/community.dart +++ b/lib/domain/media/community.dart @@ -1,7 +1,7 @@ -import 'package:webfeed/domain/media/star_rating.dart'; -import 'package:webfeed/domain/media/statistics.dart'; -import 'package:webfeed/domain/media/tags.dart'; -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/domain/media/star_rating.dart'; +import 'package:webfeed_plus/domain/media/statistics.dart'; +import 'package:webfeed_plus/domain/media/tags.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class Community { diff --git a/lib/domain/media/embed.dart b/lib/domain/media/embed.dart index 60d0b23..37e3224 100644 --- a/lib/domain/media/embed.dart +++ b/lib/domain/media/embed.dart @@ -1,4 +1,4 @@ -import 'package:webfeed/domain/media/param.dart'; +import 'package:webfeed_plus/domain/media/param.dart'; import 'package:xml/xml.dart'; class Embed { diff --git a/lib/domain/media/group.dart b/lib/domain/media/group.dart index fddecef..e0600c4 100644 --- a/lib/domain/media/group.dart +++ b/lib/domain/media/group.dart @@ -1,8 +1,8 @@ -import 'package:webfeed/domain/media/category.dart'; -import 'package:webfeed/domain/media/content.dart'; -import 'package:webfeed/domain/media/credit.dart'; -import 'package:webfeed/domain/media/rating.dart'; -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/domain/media/category.dart'; +import 'package:webfeed_plus/domain/media/content.dart'; +import 'package:webfeed_plus/domain/media/credit.dart'; +import 'package:webfeed_plus/domain/media/rating.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class Group { diff --git a/lib/domain/media/media.dart b/lib/domain/media/media.dart index 430a9a2..8875c96 100644 --- a/lib/domain/media/media.dart +++ b/lib/domain/media/media.dart @@ -1,26 +1,26 @@ -import 'package:webfeed/domain/media/category.dart'; -import 'package:webfeed/domain/media/community.dart'; -import 'package:webfeed/domain/media/content.dart'; -import 'package:webfeed/domain/media/copyright.dart'; -import 'package:webfeed/domain/media/credit.dart'; -import 'package:webfeed/domain/media/description.dart'; -import 'package:webfeed/domain/media/embed.dart'; -import 'package:webfeed/domain/media/group.dart'; -import 'package:webfeed/domain/media/hash.dart'; -import 'package:webfeed/domain/media/license.dart'; -import 'package:webfeed/domain/media/peer_link.dart'; -import 'package:webfeed/domain/media/player.dart'; -import 'package:webfeed/domain/media/price.dart'; -import 'package:webfeed/domain/media/rating.dart'; -import 'package:webfeed/domain/media/restriction.dart'; -import 'package:webfeed/domain/media/rights.dart'; -import 'package:webfeed/domain/media/scene.dart'; -import 'package:webfeed/domain/media/status.dart'; -import 'package:webfeed/domain/media/text.dart'; -import 'package:webfeed/domain/media/thumbnail.dart'; -import 'package:webfeed/domain/media/title.dart'; -import 'package:webfeed/util/iterable.dart'; -import 'package:webfeed/util/xml.dart'; +import 'package:webfeed_plus/domain/media/category.dart'; +import 'package:webfeed_plus/domain/media/community.dart'; +import 'package:webfeed_plus/domain/media/content.dart'; +import 'package:webfeed_plus/domain/media/copyright.dart'; +import 'package:webfeed_plus/domain/media/credit.dart'; +import 'package:webfeed_plus/domain/media/description.dart'; +import 'package:webfeed_plus/domain/media/embed.dart'; +import 'package:webfeed_plus/domain/media/group.dart'; +import 'package:webfeed_plus/domain/media/hash.dart'; +import 'package:webfeed_plus/domain/media/license.dart'; +import 'package:webfeed_plus/domain/media/peer_link.dart'; +import 'package:webfeed_plus/domain/media/player.dart'; +import 'package:webfeed_plus/domain/media/price.dart'; +import 'package:webfeed_plus/domain/media/rating.dart'; +import 'package:webfeed_plus/domain/media/restriction.dart'; +import 'package:webfeed_plus/domain/media/rights.dart'; +import 'package:webfeed_plus/domain/media/scene.dart'; +import 'package:webfeed_plus/domain/media/status.dart'; +import 'package:webfeed_plus/domain/media/text.dart'; +import 'package:webfeed_plus/domain/media/thumbnail.dart'; +import 'package:webfeed_plus/domain/media/title.dart'; +import 'package:webfeed_plus/util/iterable.dart'; +import 'package:webfeed_plus/util/xml.dart'; import 'package:xml/xml.dart'; class Media { diff --git a/lib/domain/media/scene.dart b/lib/domain/media/scene.dart index 32a9df4..e77a6aa 100644 --- a/lib/domain/media/scene.dart +++ b/lib/domain/media/scene.dart @@ -1,4 +1,4 @@ -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class Scene { diff --git a/lib/domain/rss_feed.dart b/lib/domain/rss_feed.dart index 4408f37..f616200 100644 --- a/lib/domain/rss_feed.dart +++ b/lib/domain/rss_feed.dart @@ -1,13 +1,13 @@ import 'dart:core'; -import 'package:webfeed/domain/dublin_core/dublin_core.dart'; -import 'package:webfeed/domain/itunes/itunes.dart'; -import 'package:webfeed/domain/rss_category.dart'; -import 'package:webfeed/domain/rss_cloud.dart'; -import 'package:webfeed/domain/rss_image.dart'; -import 'package:webfeed/domain/rss_item.dart'; -import 'package:webfeed/domain/syndication/syndication.dart'; -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/domain/dublin_core/dublin_core.dart'; +import 'package:webfeed_plus/domain/itunes/itunes.dart'; +import 'package:webfeed_plus/domain/rss_category.dart'; +import 'package:webfeed_plus/domain/rss_cloud.dart'; +import 'package:webfeed_plus/domain/rss_image.dart'; +import 'package:webfeed_plus/domain/rss_item.dart'; +import 'package:webfeed_plus/domain/syndication/syndication.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class RssFeed { diff --git a/lib/domain/rss_image.dart b/lib/domain/rss_image.dart index 6e3b1f0..135beb9 100644 --- a/lib/domain/rss_image.dart +++ b/lib/domain/rss_image.dart @@ -1,4 +1,4 @@ -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class RssImage { diff --git a/lib/domain/rss_item.dart b/lib/domain/rss_item.dart index ef9ff20..70c79bb 100644 --- a/lib/domain/rss_item.dart +++ b/lib/domain/rss_item.dart @@ -1,12 +1,12 @@ -import 'package:webfeed/domain/dublin_core/dublin_core.dart'; -import 'package:webfeed/domain/itunes/itunes.dart'; -import 'package:webfeed/domain/media/media.dart'; -import 'package:webfeed/domain/rss_category.dart'; -import 'package:webfeed/domain/rss_content.dart'; -import 'package:webfeed/domain/rss_enclosure.dart'; -import 'package:webfeed/domain/rss_source.dart'; -import 'package:webfeed/util/datetime.dart'; -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/domain/dublin_core/dublin_core.dart'; +import 'package:webfeed_plus/domain/itunes/itunes.dart'; +import 'package:webfeed_plus/domain/media/media.dart'; +import 'package:webfeed_plus/domain/rss_category.dart'; +import 'package:webfeed_plus/domain/rss_content.dart'; +import 'package:webfeed_plus/domain/rss_enclosure.dart'; +import 'package:webfeed_plus/domain/rss_source.dart'; +import 'package:webfeed_plus/util/datetime.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; class RssItem { diff --git a/lib/domain/syndication/syndication.dart b/lib/domain/syndication/syndication.dart index 8c42f3d..c33b037 100644 --- a/lib/domain/syndication/syndication.dart +++ b/lib/domain/syndication/syndication.dart @@ -1,5 +1,5 @@ -import 'package:webfeed/util/datetime.dart'; -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/util/datetime.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; enum SyndicationUpdatePeriod { hourly, daily, weekly, monthly, yearly } diff --git a/lib/util/xml.dart b/lib/util/xml.dart index 4f1ad78..045d641 100644 --- a/lib/util/xml.dart +++ b/lib/util/xml.dart @@ -1,6 +1,6 @@ import 'dart:core'; -import 'package:webfeed/util/iterable.dart'; +import 'package:webfeed_plus/util/iterable.dart'; import 'package:xml/xml.dart'; Iterable? findElements( diff --git a/lib/webfeed.dart b/lib/webfeed_plus.dart similarity index 100% rename from lib/webfeed.dart rename to lib/webfeed_plus.dart diff --git a/pubspec.yaml b/pubspec.yaml index f37ac3d..0114adb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ -name: webfeed +name: webfeed_plus -description: webfeed is a dart package for parsing RSS and Atom feeds. Media, DublinCore, iTunes, Syndication namespaces are also supported. -homepage: https://github.com/witochandra/webfeed +description: webfeed_plus is a dart package for parsing RSS and Atom feeds. Media, DublinCore, iTunes, Syndication namespaces are also supported. +homepage: https://github.com/OmkarDabade/webfeed_plus version: 1.0.0 @@ -13,6 +13,6 @@ dependencies: intl: ^0.17.0 dev_dependencies: - flutter_lints: ^2.0.0 + flutter_lints: ^2.0.1 test: ^1.21.4 http: ^0.13.4 diff --git a/test/atom_test.dart b/test/atom_test.dart index 6522d4a..6d56c2f 100644 --- a/test/atom_test.dart +++ b/test/atom_test.dart @@ -2,7 +2,7 @@ import 'dart:core'; import 'dart:io'; import 'package:test/test.dart'; -import 'package:webfeed/webfeed.dart'; +import 'package:webfeed_plus/webfeed_plus.dart'; void main() { test('parse Invalid.xml', () { diff --git a/test/rss_test.dart b/test/rss_test.dart index 9125acb..3d9f925 100644 --- a/test/rss_test.dart +++ b/test/rss_test.dart @@ -2,10 +2,10 @@ import 'dart:core'; import 'dart:io'; import 'package:test/test.dart'; -import 'package:webfeed/domain/itunes/itunes_episode_type.dart'; -import 'package:webfeed/domain/itunes/itunes_type.dart'; -import 'package:webfeed/domain/syndication/syndication.dart'; -import 'package:webfeed/webfeed.dart'; +import 'package:webfeed_plus/domain/itunes/itunes_episode_type.dart'; +import 'package:webfeed_plus/domain/itunes/itunes_type.dart'; +import 'package:webfeed_plus/domain/syndication/syndication.dart'; +import 'package:webfeed_plus/webfeed_plus.dart'; void main() { test('parse Invalid.xml', () { From 1676e21f65bc89ff6707c8a8c97be7636013e601 Mon Sep 17 00:00:00 2001 From: Omkar Dabade Date: Sat, 17 Sep 2022 12:03:35 +0530 Subject: [PATCH 4/8] . --- CHANGELOG.md | 6 +++++- pubspec.lock | 16 ++++++++-------- pubspec.yaml | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13a26ad..f27fec2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,14 @@ +# Changelogs ## 1.0.0 + - Change in package name to "webfeed_plus" from "webfeed" - This package is forked from [webfeed](https://github.com/witochandra/webfeed) ## 0.7.1 + - Dependency upgrade ## 0.7.0 - 0.3.0 -- Please refer [webfeed](https://pub.dev/packages/webfeed/changelog) \ No newline at end of file + +- Please refer [webfeed](https://pub.dev/packages/webfeed/changelog) diff --git a/pubspec.lock b/pubspec.lock index 72900e9..326f4dc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,14 +7,14 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "42.0.0" + version: "47.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "4.3.0" + version: "4.7.0" args: dependency: transitive description: @@ -63,7 +63,7 @@ packages: name: coverage url: "https://pub.dartlang.org" source: hosted - version: "1.5.0" + version: "1.6.0" crypto: dependency: transitive description: @@ -77,7 +77,7 @@ packages: name: file url: "https://pub.dartlang.org" source: hosted - version: "6.1.2" + version: "6.1.4" flutter_lints: dependency: "direct dev" description: @@ -105,7 +105,7 @@ packages: name: http url: "https://pub.dartlang.org" source: hosted - version: "0.13.4" + version: "0.13.5" http_multi_server: dependency: transitive description: @@ -224,7 +224,7 @@ packages: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "1.3.1" + version: "1.3.2" shelf_packages_handler: dependency: transitive description: @@ -329,7 +329,7 @@ packages: name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "9.3.0" + version: "9.4.0" watcher: dependency: transitive description: @@ -350,7 +350,7 @@ packages: name: webkit_inspection_protocol url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" xml: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 0114adb..0338ce3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,4 +15,4 @@ dependencies: dev_dependencies: flutter_lints: ^2.0.1 test: ^1.21.4 - http: ^0.13.4 + http: ^0.13.5 From e3319ce20e498abb2e50fb32dd9008d53e4f2d9d Mon Sep 17 00:00:00 2001 From: Omkar Dabade Date: Sun, 20 Aug 2023 17:11:07 +0530 Subject: [PATCH 5/8] upgrades dependencies --- CHANGELOG.md | 5 ++ README.md | 2 +- pubspec.lock | 188 ++++++++++++++++++++++++++++++++------------------- pubspec.yaml | 14 ++-- 4 files changed, 133 insertions(+), 76 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f27fec2..c6200f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelogs +## 1.0.1 + +- Dependencies upgrade +- Dart SDK upgrade, requires SDK >= 3.0.0 + ## 1.0.0 - Change in package name to "webfeed_plus" from "webfeed" diff --git a/README.md b/README.md index 218912d..bde2bdd 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ A dart package for parsing RSS and Atom feed. Add this line into your `pubspec.yaml` ``` -webfeed_plus: ^1.0.0 +webfeed_plus: ^1.0.1 ``` Import the package into your dart code using: diff --git a/pubspec.lock b/pubspec.lock index 326f4dc..4647c80 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,365 +5,417 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.dartlang.org" + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + url: "https://pub.dev" source: hosted - version: "47.0.0" + version: "64.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.dartlang.org" + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + url: "https://pub.dev" source: hosted - version: "4.7.0" + version: "6.2.0" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: b003c3098049a51720352d219b0bb5f219b60fbfb68e7a4748139a06a5676515 + url: "https://pub.dev" source: hosted version: "2.3.1" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "5bbf32bc9e518d41ec49718e2931cd4527292c9b0c6d2dffcf7fe6b9a8a8cf72" + url: "https://pub.dev" source: hosted version: "2.1.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.18.0" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + sha256: "196284f26f69444b7f5c50692b55ec25da86d9e500451dc09333bf2e3ad69259" + url: "https://pub.dev" source: hosted version: "3.0.2" coverage: dependency: transitive description: name: coverage - url: "https://pub.dartlang.org" + sha256: a6016ec1bc4c645cdc4f3dc931ac281ef3c96404a6a9a3096ac9a100c941fd1f + url: "https://pub.dev" source: hosted version: "1.6.0" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + url: "https://pub.dev" source: hosted version: "3.0.2" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" source: hosted version: "6.1.4" flutter_lints: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.2" frontend_server_client: dependency: transitive description: name: frontend_server_client - url: "https://pub.dartlang.org" + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "3.2.0" glob: dependency: transitive description: name: glob - url: "https://pub.dartlang.org" + sha256: c51b4fdfee4d281f49b8c957f1add91b815473597f76bcf07377987f66a55729 + url: "https://pub.dev" source: hosted version: "2.1.0" http: dependency: "direct dev" description: name: http - url: "https://pub.dartlang.org" + sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "1.1.0" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.dartlang.org" + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" source: hosted version: "3.2.1" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: db3060f22889f3d9d55f6a217565486737037eec3609f7f3eca4d0c67ee0d8a0 + url: "https://pub.dev" source: hosted version: "4.0.1" intl: dependency: "direct main" description: name: intl - url: "https://pub.dartlang.org" + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + url: "https://pub.dev" source: hosted - version: "0.17.0" + version: "0.18.1" io: dependency: transitive description: name: io - url: "https://pub.dartlang.org" + sha256: "0d4c73c3653ab85bf696d51a9657604c900a370549196a91f33e4c39af760852" + url: "https://pub.dev" source: hosted version: "1.0.3" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: a5e201311cb08bf3912ebbe9a2be096e182d703f881136ec1e81a2338a9e120d + url: "https://pub.dev" source: hosted version: "0.6.4" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: "5cfd6509652ff5e7fe149b6df4859e687fca9048437857cb2e65c8d780f396e3" + url: "https://pub.dev" source: hosted version: "2.0.0" logging: dependency: transitive description: name: logging - url: "https://pub.dartlang.org" + sha256: "293ae2d49fd79d4c04944c3a26dfd313382d5f52e821ec57119230ae16031ad4" + url: "https://pub.dev" source: hosted version: "1.0.2" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.16" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" mime: dependency: transitive description: name: mime - url: "https://pub.dartlang.org" + sha256: dab22e92b41aa1255ea90ddc4bc2feaf35544fd0728e209638cad041a6e3928a + url: "https://pub.dev" source: hosted version: "1.0.2" node_preamble: dependency: transitive description: name: node_preamble - url: "https://pub.dartlang.org" + sha256: "8ebdbaa3b96d5285d068f80772390d27c21e1fa10fb2df6627b1b9415043608d" + url: "https://pub.dev" source: hosted version: "2.0.1" package_config: dependency: transitive description: name: package_config - url: "https://pub.dartlang.org" + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" source: hosted version: "2.1.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted version: "1.8.2" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6 + url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "6.0.1" pool: dependency: transitive description: name: pool - url: "https://pub.dartlang.org" + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" source: hosted version: "1.5.1" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.dartlang.org" + sha256: "816c1a640e952d213ddd223b3e7aafae08cd9f8e1f6864eed304cc13b0272b07" + url: "https://pub.dev" source: hosted version: "2.1.1" shelf: dependency: transitive description: name: shelf - url: "https://pub.dartlang.org" + sha256: "8ec607599dd0a78931a5114cdac7d609b6dbbf479a38acc9a6dba024b2a30ea0" + url: "https://pub.dev" source: hosted version: "1.3.2" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler - url: "https://pub.dartlang.org" + sha256: aef74dc9195746a384843102142ab65b6a4735bb3beea791e63527b88cc83306 + url: "https://pub.dev" source: hosted version: "3.0.1" shelf_static: dependency: transitive description: name: shelf_static - url: "https://pub.dartlang.org" + sha256: e792b76b96a36d4a41b819da593aff4bdd413576b3ba6150df5d8d9996d2e74c + url: "https://pub.dev" source: hosted version: "1.1.1" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.dartlang.org" + sha256: "6db16374bc3497d21aa0eebe674d3db9fdf82082aac0f04dc7b44e4af5b08afc" + url: "https://pub.dev" source: hosted version: "1.0.2" source_map_stack_trace: dependency: transitive description: name: source_map_stack_trace - url: "https://pub.dartlang.org" + sha256: "8c463326277f68a628abab20580047b419c2ff66756fd0affd451f73f9508c11" + url: "https://pub.dev" source: hosted version: "2.1.0" source_maps: dependency: transitive description: name: source_maps - url: "https://pub.dartlang.org" + sha256: "52de2200bb098de739794c82d09c41ac27b2e42fd7e23cce7b9c74bf653c7296" + url: "https://pub.dev" source: hosted version: "0.10.10" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: f8d9f247e2f9f90e32d1495ff32dac7e4ae34ffa7194c5ff8fcc0fd0e52df774 + url: "https://pub.dev" source: hosted version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: db47e4797198ee601990820437179bb90219f918962318d494ada2b4b11e6f6d + url: "https://pub.dev" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "862015c5db1f3f3c4ea3b94dc2490363a84262994b88902315ed74be1155612f" + url: "https://pub.dev" source: hosted version: "1.1.1" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted version: "1.2.1" test: dependency: "direct dev" description: name: test - url: "https://pub.dartlang.org" + sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" + url: "https://pub.dev" source: hosted - version: "1.21.4" + version: "1.24.6" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.6.1" test_core: dependency: transitive description: name: test_core - url: "https://pub.dartlang.org" + sha256: "4bef837e56375537055fdbbbf6dd458b1859881f4c7e6da936158f77d61ab265" + url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.5.6" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + url: "https://pub.dev" source: hosted version: "1.3.1" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.dartlang.org" + sha256: e7fb6c2282f7631712b69c19d1bff82f3767eea33a2321c14fa59ad67ea391c7 + url: "https://pub.dev" source: hosted version: "9.4.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.dartlang.org" + sha256: e42dfcc48f67618344da967b10f62de57e04bae01d9d3af4c2596f3712a88c99 + url: "https://pub.dev" source: hosted version: "1.0.1" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.dartlang.org" + sha256: "3a969ddcc204a3e34e863d204b29c0752716f78b6f9cc8235083208d268a4ccd" + url: "https://pub.dev" source: hosted version: "2.2.0" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol - url: "https://pub.dartlang.org" + sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" + url: "https://pub.dev" source: hosted version: "1.2.0" xml: dependency: "direct main" description: name: xml - url: "https://pub.dartlang.org" + sha256: af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556 + url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.4.2" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + url: "https://pub.dev" source: hosted version: "3.1.1" sdks: - dart: ">=2.17.0 <3.0.0" + dart: ">=3.0.0 <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 0338ce3..4863c87 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,16 +3,16 @@ name: webfeed_plus description: webfeed_plus is a dart package for parsing RSS and Atom feeds. Media, DublinCore, iTunes, Syndication namespaces are also supported. homepage: https://github.com/OmkarDabade/webfeed_plus -version: 1.0.0 +version: 1.0.1 environment: - sdk: ">=2.17.0 <3.0.0" + sdk: ">=3.0.0 <4.0.0" dependencies: - xml: ^6.1.0 - intl: ^0.17.0 + xml: ^6.4.2 + intl: ^0.18.1 dev_dependencies: - flutter_lints: ^2.0.1 - test: ^1.21.4 - http: ^0.13.5 + flutter_lints: ^2.0.2 + test: ^1.24.6 + http: ^1.1.0 From 4f48d8d896ad2b81e5675b3910dbccfeca4e816b Mon Sep 17 00:00:00 2001 From: Omkar Dabade Date: Sun, 20 Aug 2023 17:11:50 +0530 Subject: [PATCH 6/8] . --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 4863c87..feb52d9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ name: webfeed_plus description: webfeed_plus is a dart package for parsing RSS and Atom feeds. Media, DublinCore, iTunes, Syndication namespaces are also supported. homepage: https://github.com/OmkarDabade/webfeed_plus -version: 1.0.1 +version: 1.0.1+1 environment: sdk: ">=3.0.0 <4.0.0" From 0b3ed45e361187ccb55a8d30bceeecc6a4519732 Mon Sep 17 00:00:00 2001 From: Omkar Dabade Date: Sat, 1 Jun 2024 16:42:57 +0530 Subject: [PATCH 7/8] support for flutter 3.22 --- CHANGELOG.md | 4 + lib/domain/atom_feed.dart | 14 +- lib/domain/atom_generator.dart | 2 +- lib/domain/atom_item.dart | 15 +- lib/domain/atom_person.dart | 6 +- lib/domain/atom_source.dart | 6 +- lib/domain/dublin_core/dublin_core.dart | 34 ++-- lib/domain/itunes/itunes.dart | 21 +- lib/domain/itunes/itunes_episode_type.dart | 2 +- lib/domain/itunes/itunes_owner.dart | 4 +- lib/domain/itunes/itunes_type.dart | 2 +- lib/domain/media/category.dart | 2 +- lib/domain/media/copyright.dart | 2 +- lib/domain/media/credit.dart | 2 +- lib/domain/media/description.dart | 2 +- lib/domain/media/hash.dart | 2 +- lib/domain/media/license.dart | 2 +- lib/domain/media/media.dart | 8 +- lib/domain/media/param.dart | 2 +- lib/domain/media/peer_link.dart | 2 +- lib/domain/media/player.dart | 2 +- lib/domain/media/rating.dart | 2 +- lib/domain/media/restriction.dart | 2 +- lib/domain/media/scene.dart | 8 +- lib/domain/media/tags.dart | 2 +- lib/domain/media/text.dart | 2 +- lib/domain/media/title.dart | 2 +- lib/domain/rss_category.dart | 2 +- lib/domain/rss_content.dart | 2 +- lib/domain/rss_feed.dart | 31 +-- lib/domain/rss_image.dart | 6 +- lib/domain/rss_item.dart | 15 +- lib/domain/rss_source.dart | 2 +- lib/domain/syndication/syndication.dart | 6 +- lib/util/xml.dart | 3 +- pubspec.lock | 211 ++++++++++++--------- pubspec.yaml | 6 +- test/atom_test.dart | 2 +- test/rss_test.dart | 2 +- 39 files changed, 240 insertions(+), 202 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6200f9..6f622ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelogs +## 1.1.0 + +- Support for Flutter 3.22 + ## 1.0.1 - Dependencies upgrade diff --git a/lib/domain/atom_feed.dart b/lib/domain/atom_feed.dart index d7d5d29..8da3f24 100644 --- a/lib/domain/atom_feed.dart +++ b/lib/domain/atom_feed.dart @@ -47,10 +47,10 @@ class AtomFeed { } return AtomFeed( - id: feedElement.findElements('id').firstOrNull?.text, - title: feedElement.findElements('title').firstOrNull?.text, + id: feedElement.findElements('id').firstOrNull?.value, + title: feedElement.findElements('title').firstOrNull?.value, updated: - parseDateTime(feedElement.findElements('updated').firstOrNull?.text), + parseDateTime(feedElement.findElements('updated').firstOrNull?.value), items: feedElement .findElements('entry') .map((e) => AtomItem.parse(e)) @@ -75,10 +75,10 @@ class AtomFeed { .findElements('generator') .map((e) => AtomGenerator.parse(e)) .firstOrNull, - icon: feedElement.findElements('icon').firstOrNull?.text, - logo: feedElement.findElements('logo').firstOrNull?.text, - rights: feedElement.findElements('rights').firstOrNull?.text, - subtitle: feedElement.findElements('subtitle').firstOrNull?.text, + icon: feedElement.findElements('icon').firstOrNull?.value, + logo: feedElement.findElements('logo').firstOrNull?.value, + rights: feedElement.findElements('rights').firstOrNull?.value, + subtitle: feedElement.findElements('subtitle').firstOrNull?.value, ); } } diff --git a/lib/domain/atom_generator.dart b/lib/domain/atom_generator.dart index 63377c0..73cd678 100644 --- a/lib/domain/atom_generator.dart +++ b/lib/domain/atom_generator.dart @@ -10,7 +10,7 @@ class AtomGenerator { factory AtomGenerator.parse(XmlElement element) { var uri = element.getAttribute('uri'); var version = element.getAttribute('version'); - var value = element.text; + var value = element.value; return AtomGenerator(uri, version, value); } } diff --git a/lib/domain/atom_item.dart b/lib/domain/atom_item.dart index 4e43fbd..4056492 100644 --- a/lib/domain/atom_item.dart +++ b/lib/domain/atom_item.dart @@ -41,9 +41,10 @@ class AtomItem { factory AtomItem.parse(XmlElement element) { return AtomItem( - id: element.findElements('id').firstOrNull?.text, - title: element.findElements('title').firstOrNull?.text, - updated: parseDateTime(element.findElements('updated').firstOrNull?.text), + id: element.findElements('id').firstOrNull?.value, + title: element.findElements('title').firstOrNull?.value, + updated: + parseDateTime(element.findElements('updated').firstOrNull?.value), authors: element .findElements('author') .map((e) => AtomPerson.parse(e)) @@ -62,10 +63,10 @@ class AtomItem { .findElements('source') .map((e) => AtomSource.parse(e)) .firstOrNull, - published: element.findElements('published').firstOrNull?.text, - content: element.findElements('content').firstOrNull?.text, - summary: element.findElements('summary').firstOrNull?.text, - rights: element.findElements('rights').firstOrNull?.text, + published: element.findElements('published').firstOrNull?.value, + content: element.findElements('content').firstOrNull?.value, + summary: element.findElements('summary').firstOrNull?.value, + rights: element.findElements('rights').firstOrNull?.value, media: Media.parse(element), ); } diff --git a/lib/domain/atom_person.dart b/lib/domain/atom_person.dart index 2edcffd..98ced85 100644 --- a/lib/domain/atom_person.dart +++ b/lib/domain/atom_person.dart @@ -10,9 +10,9 @@ class AtomPerson { factory AtomPerson.parse(XmlElement element) { return AtomPerson( - name: element.findElements('name').firstOrNull?.text, - uri: element.findElements('uri').firstOrNull?.text, - email: element.findElements('email').firstOrNull?.text, + name: element.findElements('name').firstOrNull?.value, + uri: element.findElements('uri').firstOrNull?.value, + email: element.findElements('email').firstOrNull?.value, ); } } diff --git a/lib/domain/atom_source.dart b/lib/domain/atom_source.dart index 5bd24ac..9098b29 100644 --- a/lib/domain/atom_source.dart +++ b/lib/domain/atom_source.dart @@ -14,9 +14,9 @@ class AtomSource { factory AtomSource.parse(XmlElement element) { return AtomSource( - id: element.findElements('id').firstOrNull?.text, - title: element.findElements('title').firstOrNull?.text, - updated: element.findElements('updated').firstOrNull?.text, + id: element.findElements('id').firstOrNull?.value, + title: element.findElements('title').firstOrNull?.value, + updated: element.findElements('updated').firstOrNull?.value, ); } } diff --git a/lib/domain/dublin_core/dublin_core.dart b/lib/domain/dublin_core/dublin_core.dart index 5d43c78..49a7b91 100644 --- a/lib/domain/dublin_core/dublin_core.dart +++ b/lib/domain/dublin_core/dublin_core.dart @@ -43,25 +43,25 @@ class DublinCore { factory DublinCore.parse(XmlElement element) { return DublinCore( - title: element.findElements('dc:title').firstOrNull?.text, - description: element.findElements('dc:description').firstOrNull?.text, - creator: element.findElements('dc:creator').firstOrNull?.text, - subject: element.findElements('dc:subject').firstOrNull?.text, - publisher: element.findElements('dc:publisher').firstOrNull?.text, - contributor: element.findElements('dc:contributor').firstOrNull?.text, - date: parseDateTime(element.findElements('dc:date').firstOrNull?.text), + title: element.findElements('dc:title').firstOrNull?.value, + description: element.findElements('dc:description').firstOrNull?.value, + creator: element.findElements('dc:creator').firstOrNull?.value, + subject: element.findElements('dc:subject').firstOrNull?.value, + publisher: element.findElements('dc:publisher').firstOrNull?.value, + contributor: element.findElements('dc:contributor').firstOrNull?.value, + date: parseDateTime(element.findElements('dc:date').firstOrNull?.value), created: - parseDateTime(element.findElements('dc:created').firstOrNull?.text), + parseDateTime(element.findElements('dc:created').firstOrNull?.value), modified: - parseDateTime(element.findElements('dc:modified').firstOrNull?.text), - type: element.findElements('dc:type').firstOrNull?.text, - format: element.findElements('dc:format').firstOrNull?.text, - identifier: element.findElements('dc:identifier').firstOrNull?.text, - source: element.findElements('dc:source').firstOrNull?.text, - language: element.findElements('dc:language').firstOrNull?.text, - relation: element.findElements('dc:relation').firstOrNull?.text, - coverage: element.findElements('dc:coverage').firstOrNull?.text, - rights: element.findElements('dc:rights').firstOrNull?.text, + parseDateTime(element.findElements('dc:modified').firstOrNull?.value), + type: element.findElements('dc:type').firstOrNull?.value, + format: element.findElements('dc:format').firstOrNull?.value, + identifier: element.findElements('dc:identifier').firstOrNull?.value, + source: element.findElements('dc:source').firstOrNull?.value, + language: element.findElements('dc:language').firstOrNull?.value, + relation: element.findElements('dc:relation').firstOrNull?.value, + coverage: element.findElements('dc:coverage').firstOrNull?.value, + rights: element.findElements('dc:rights').firstOrNull?.value, ); } } diff --git a/lib/domain/itunes/itunes.dart b/lib/domain/itunes/itunes.dart index d3050f6..b2290f8 100644 --- a/lib/domain/itunes/itunes.dart +++ b/lib/domain/itunes/itunes.dart @@ -48,17 +48,17 @@ class Itunes { factory Itunes.parse(XmlElement element) { final episodeStr = - element.findElements('itunes:episode').firstOrNull?.text ?? ''; + element.findElements('itunes:episode').firstOrNull?.value ?? ''; final seasonStr = - element.findElements('itunes:season').firstOrNull?.text ?? ''; + element.findElements('itunes:season').firstOrNull?.value ?? ''; final durationStr = - element.findElements('itunes:duration').firstOrNull?.text ?? ''; + element.findElements('itunes:duration').firstOrNull?.value ?? ''; return Itunes( - author: element.findElements('itunes:author').firstOrNull?.text, - summary: element.findElements('itunes:summary').firstOrNull?.text, + author: element.findElements('itunes:author').firstOrNull?.value, + summary: element.findElements('itunes:summary').firstOrNull?.value, explicit: parseBoolLiteral(element, 'itunes:explicit'), - title: element.findElements('itunes:title').firstOrNull?.text, - subtitle: element.findElements('itunes:subtitle').firstOrNull?.text, + title: element.findElements('itunes:title').firstOrNull?.value, + subtitle: element.findElements('itunes:subtitle').firstOrNull?.value, owner: element .findElements('itunes:owner') .map((e) => ItunesOwner.parse(e)) @@ -66,8 +66,8 @@ class Itunes { keywords: element .findElements('itunes:keywords') .firstOrNull - ?.text - .split(',') + ?.value + ?.split(',') .map((keyword) => keyword.trim()) .toList() ?? [], @@ -83,7 +83,8 @@ class Itunes { .findElements('itunes:type') .map((e) => newItunesType(e)) .firstOrNull, - newFeedUrl: element.findElements('itunes:new-feed-url').firstOrNull?.text, + newFeedUrl: + element.findElements('itunes:new-feed-url').firstOrNull?.value, block: parseBoolLiteral(element, 'itunes:block'), complete: parseBoolLiteral(element, 'itunes:complete'), episode: episodeStr.isNotEmpty ? int.tryParse(episodeStr) : null, diff --git a/lib/domain/itunes/itunes_episode_type.dart b/lib/domain/itunes/itunes_episode_type.dart index 31e2ad9..fb8ffab 100644 --- a/lib/domain/itunes/itunes_episode_type.dart +++ b/lib/domain/itunes/itunes_episode_type.dart @@ -3,7 +3,7 @@ import 'package:xml/xml.dart'; enum ItunesEpisodeType { full, trailer, bonus, unknown } ItunesEpisodeType newItunesEpisodeType(XmlElement element) { - switch (element.text) { + switch (element.value) { case 'full': return ItunesEpisodeType.full; case 'trailer': diff --git a/lib/domain/itunes/itunes_owner.dart b/lib/domain/itunes/itunes_owner.dart index 3a10bf5..b242ba2 100644 --- a/lib/domain/itunes/itunes_owner.dart +++ b/lib/domain/itunes/itunes_owner.dart @@ -9,8 +9,8 @@ class ItunesOwner { factory ItunesOwner.parse(XmlElement element) { return ItunesOwner( - name: element.findElements('itunes:name').firstOrNull?.text.trim(), - email: element.findElements('itunes:email').firstOrNull?.text.trim(), + name: element.findElements('itunes:name').firstOrNull?.value?.trim(), + email: element.findElements('itunes:email').firstOrNull?.value?.trim(), ); } } diff --git a/lib/domain/itunes/itunes_type.dart b/lib/domain/itunes/itunes_type.dart index 741b3e6..dd48a32 100644 --- a/lib/domain/itunes/itunes_type.dart +++ b/lib/domain/itunes/itunes_type.dart @@ -3,7 +3,7 @@ import 'package:xml/xml.dart'; enum ItunesType { episodic, serial, unknown } ItunesType newItunesType(XmlElement element) { - switch (element.text) { + switch (element.value) { case 'episodic': return ItunesType.episodic; case 'serial': diff --git a/lib/domain/media/category.dart b/lib/domain/media/category.dart index 70b3d9a..f00034f 100644 --- a/lib/domain/media/category.dart +++ b/lib/domain/media/category.dart @@ -15,7 +15,7 @@ class Category { return Category( scheme: element.getAttribute('scheme'), label: element.getAttribute('label'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/copyright.dart b/lib/domain/media/copyright.dart index e1ec675..a0a291a 100644 --- a/lib/domain/media/copyright.dart +++ b/lib/domain/media/copyright.dart @@ -12,7 +12,7 @@ class Copyright { factory Copyright.parse(XmlElement element) { return Copyright( url: element.getAttribute('url'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/credit.dart b/lib/domain/media/credit.dart index 4fc8e9e..5e03e61 100644 --- a/lib/domain/media/credit.dart +++ b/lib/domain/media/credit.dart @@ -15,7 +15,7 @@ class Credit { return Credit( role: element.getAttribute('role'), scheme: element.getAttribute('scheme'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/description.dart b/lib/domain/media/description.dart index 2e0aa82..4c238f9 100644 --- a/lib/domain/media/description.dart +++ b/lib/domain/media/description.dart @@ -12,7 +12,7 @@ class Description { factory Description.parse(XmlElement element) { return Description( type: element.getAttribute('type'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/hash.dart b/lib/domain/media/hash.dart index 7387e22..c80e583 100644 --- a/lib/domain/media/hash.dart +++ b/lib/domain/media/hash.dart @@ -12,7 +12,7 @@ class Hash { factory Hash.parse(XmlElement element) { return Hash( algo: element.getAttribute('algo'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/license.dart b/lib/domain/media/license.dart index 18f50f8..5a8ba6f 100644 --- a/lib/domain/media/license.dart +++ b/lib/domain/media/license.dart @@ -15,7 +15,7 @@ class License { return License( type: element.getAttribute('type'), href: element.getAttribute('href'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/media.dart b/lib/domain/media/media.dart index 8875c96..73ce85b 100644 --- a/lib/domain/media/media.dart +++ b/lib/domain/media/media.dart @@ -107,7 +107,7 @@ class Media { .findElements('media:description') .map((e) => Description.parse(e)) .firstOrNull, - keywords: element.findElements('media:keywords').firstOrNull?.text, + keywords: element.findElements('media:keywords').firstOrNull?.value, thumbnails: element .findElements('media:thumbnail') .map((e) => Thumbnail.parse(e)) @@ -140,7 +140,7 @@ class Media { .findElements('media:comments') .firstOrNull ?.findElements('media:comment') - .map((e) => e.text) + .map((e) => e.innerText) .toList() ?? [], embed: element @@ -151,14 +151,14 @@ class Media { .findElements('media:responses') .firstOrNull ?.findElements('media:response') - .map((e) => e.text) + .map((e) => e.innerText) .toList() ?? [], backLinks: element .findElements('media:backLinks') .firstOrNull ?.findElements('media:backLink') - .map((e) => e.text) + .map((e) => e.innerText) .toList() ?? [], status: element diff --git a/lib/domain/media/param.dart b/lib/domain/media/param.dart index 0e8b969..e1f366e 100644 --- a/lib/domain/media/param.dart +++ b/lib/domain/media/param.dart @@ -12,7 +12,7 @@ class Param { factory Param.parse(XmlElement element) { return Param( name: element.getAttribute('name'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/peer_link.dart b/lib/domain/media/peer_link.dart index d8bec62..4cbb113 100644 --- a/lib/domain/media/peer_link.dart +++ b/lib/domain/media/peer_link.dart @@ -15,7 +15,7 @@ class PeerLink { return PeerLink( type: element.getAttribute('type'), href: element.getAttribute('href'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/player.dart b/lib/domain/media/player.dart index 102c081..0be2636 100644 --- a/lib/domain/media/player.dart +++ b/lib/domain/media/player.dart @@ -18,7 +18,7 @@ class Player { url: element.getAttribute('url'), width: int.tryParse(element.getAttribute('width') ?? '0'), height: int.tryParse(element.getAttribute('height') ?? '0'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/rating.dart b/lib/domain/media/rating.dart index a9212c1..057ab27 100644 --- a/lib/domain/media/rating.dart +++ b/lib/domain/media/rating.dart @@ -12,7 +12,7 @@ class Rating { factory Rating.parse(XmlElement element) { return Rating( scheme: element.getAttribute('scheme'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/restriction.dart b/lib/domain/media/restriction.dart index 85f7dbf..561704f 100644 --- a/lib/domain/media/restriction.dart +++ b/lib/domain/media/restriction.dart @@ -15,7 +15,7 @@ class Restriction { return Restriction( relationship: element.getAttribute('relationship'), type: element.getAttribute('type'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/scene.dart b/lib/domain/media/scene.dart index e77a6aa..d4ad133 100644 --- a/lib/domain/media/scene.dart +++ b/lib/domain/media/scene.dart @@ -16,10 +16,10 @@ class Scene { factory Scene.parse(XmlElement element) { return Scene( - title: element.findElements('sceneTitle').firstOrNull?.text, - description: element.findElements('sceneDescription').firstOrNull?.text, - startTime: element.findElements('sceneStartTime').firstOrNull?.text, - endTime: element.findElements('sceneEndTime').firstOrNull?.text, + title: element.findElements('sceneTitle').firstOrNull?.value, + description: element.findElements('sceneDescription').firstOrNull?.value, + startTime: element.findElements('sceneStartTime').firstOrNull?.value, + endTime: element.findElements('sceneEndTime').firstOrNull?.value, ); } } diff --git a/lib/domain/media/tags.dart b/lib/domain/media/tags.dart index d52c316..e5337bc 100644 --- a/lib/domain/media/tags.dart +++ b/lib/domain/media/tags.dart @@ -11,7 +11,7 @@ class Tags { factory Tags.parse(XmlElement element) { return Tags( - tags: element.text, + tags: element.value, weight: int.tryParse(element.getAttribute('weight') ?? '1'), ); } diff --git a/lib/domain/media/text.dart b/lib/domain/media/text.dart index b91ba67..6a7202e 100644 --- a/lib/domain/media/text.dart +++ b/lib/domain/media/text.dart @@ -21,7 +21,7 @@ class Text { lang: element.getAttribute('lang'), start: element.getAttribute('start'), end: element.getAttribute('end'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/media/title.dart b/lib/domain/media/title.dart index 4b523bf..8acd57e 100644 --- a/lib/domain/media/title.dart +++ b/lib/domain/media/title.dart @@ -12,7 +12,7 @@ class Title { factory Title.parse(XmlElement element) { return Title( type: element.getAttribute('type'), - value: element.text, + value: element.value, ); } } diff --git a/lib/domain/rss_category.dart b/lib/domain/rss_category.dart index 6196776..d97ed7f 100644 --- a/lib/domain/rss_category.dart +++ b/lib/domain/rss_category.dart @@ -8,7 +8,7 @@ class RssCategory { factory RssCategory.parse(XmlElement element) { var domain = element.getAttribute('domain'); - var value = element.text; + var value = element.innerText; return RssCategory(domain, value); } diff --git a/lib/domain/rss_content.dart b/lib/domain/rss_content.dart index c79c564..bce38ff 100644 --- a/lib/domain/rss_content.dart +++ b/lib/domain/rss_content.dart @@ -17,7 +17,7 @@ class RssContent { RssContent(this.value, this.images); factory RssContent.parse(XmlElement element) { - final content = element.text; + final content = element.innerText; final images = []; _imagesRegExp.allMatches(content).forEach((match) { images.add(match.group(1)!); diff --git a/lib/domain/rss_feed.dart b/lib/domain/rss_feed.dart index f616200..8ae86a8 100644 --- a/lib/domain/rss_feed.dart +++ b/lib/domain/rss_feed.dart @@ -72,10 +72,11 @@ class RssFeed { throw ArgumentError('channel not found'); } return RssFeed( - title: channelElement.findElements('title').firstOrNull?.text, - author: channelElement.findElements('author').firstOrNull?.text, - description: channelElement.findElements('description').firstOrNull?.text, - link: channelElement.findElements('link').firstOrNull?.text, + title: channelElement.findElements('title').firstOrNull?.value, + author: channelElement.findElements('author').firstOrNull?.value, + description: + channelElement.findElements('description').firstOrNull?.value, + link: channelElement.findElements('link').firstOrNull?.value, items: (rdf ?? channelElement) .findElements('item') .map((e) => RssItem.parse(e)) @@ -96,28 +97,28 @@ class RssFeed { .findElements('skipDays') .firstOrNull ?.findAllElements('day') - .map((e) => e.text) + .map((e) => e.innerText) .toList() ?? [], skipHours: channelElement .findElements('skipHours') .firstOrNull ?.findAllElements('hour') - .map((e) => int.tryParse(e.text) ?? 0) + .map((e) => int.tryParse(e.value ?? '') ?? 0) .toList() ?? [], lastBuildDate: - channelElement.findElements('lastBuildDate').firstOrNull?.text, - language: channelElement.findElements('language').firstOrNull?.text, - generator: channelElement.findElements('generator').firstOrNull?.text, - copyright: channelElement.findElements('copyright').firstOrNull?.text, - docs: channelElement.findElements('docs').firstOrNull?.text, + channelElement.findElements('lastBuildDate').firstOrNull?.value, + language: channelElement.findElements('language').firstOrNull?.value, + generator: channelElement.findElements('generator').firstOrNull?.value, + copyright: channelElement.findElements('copyright').firstOrNull?.value, + docs: channelElement.findElements('docs').firstOrNull?.value, managingEditor: - channelElement.findElements('managingEditor').firstOrNull?.text, - rating: channelElement.findElements('rating').firstOrNull?.text, - webMaster: channelElement.findElements('webMaster').firstOrNull?.text, + channelElement.findElements('managingEditor').firstOrNull?.value, + rating: channelElement.findElements('rating').firstOrNull?.value, + webMaster: channelElement.findElements('webMaster').firstOrNull?.value, ttl: int.tryParse( - channelElement.findElements('ttl').firstOrNull?.text ?? '0'), + channelElement.findElements('ttl').firstOrNull?.value ?? '0'), dc: DublinCore.parse(channelElement), itunes: Itunes.parse(channelElement), syndication: Syndication.parse(channelElement), diff --git a/lib/domain/rss_image.dart b/lib/domain/rss_image.dart index 135beb9..60d3e6a 100644 --- a/lib/domain/rss_image.dart +++ b/lib/domain/rss_image.dart @@ -10,9 +10,9 @@ class RssImage { factory RssImage.parse(XmlElement element) { return RssImage( - title: element.findElements('title').firstOrNull?.text, - url: element.findElements('url').firstOrNull?.text, - link: element.findElements('link').firstOrNull?.text, + title: element.findElements('title').firstOrNull?.value, + url: element.findElements('url').firstOrNull?.value, + link: element.findElements('link').firstOrNull?.value, ); } } diff --git a/lib/domain/rss_item.dart b/lib/domain/rss_item.dart index 70c79bb..79c76a1 100644 --- a/lib/domain/rss_item.dart +++ b/lib/domain/rss_item.dart @@ -45,17 +45,18 @@ class RssItem { factory RssItem.parse(XmlElement element) { return RssItem( - title: element.findElements('title').firstOrNull?.text, - description: element.findElements('description').firstOrNull?.text, - link: element.findElements('link').firstOrNull?.text, + title: element.findElements('title').firstOrNull?.value, + description: element.findElements('description').firstOrNull?.value, + link: element.findElements('link').firstOrNull?.value, categories: element .findElements('category') .map((e) => RssCategory.parse(e)) .toList(), - guid: element.findElements('guid').firstOrNull?.text, - pubDate: parseDateTime(element.findElements('pubDate').firstOrNull?.text), - author: element.findElements('author').firstOrNull?.text, - comments: element.findElements('comments').firstOrNull?.text, + guid: element.findElements('guid').firstOrNull?.value, + pubDate: + parseDateTime(element.findElements('pubDate').firstOrNull?.value), + author: element.findElements('author').firstOrNull?.value, + comments: element.findElements('comments').firstOrNull?.value, source: element .findElements('source') .map((e) => RssSource.parse(e)) diff --git a/lib/domain/rss_source.dart b/lib/domain/rss_source.dart index 3b94b8a..7d3f751 100644 --- a/lib/domain/rss_source.dart +++ b/lib/domain/rss_source.dart @@ -8,7 +8,7 @@ class RssSource { factory RssSource.parse(XmlElement element) { var url = element.getAttribute('url'); - var value = element.text; + var value = element.value; return RssSource(url, value); } diff --git a/lib/domain/syndication/syndication.dart b/lib/domain/syndication/syndication.dart index c33b037..f18781a 100644 --- a/lib/domain/syndication/syndication.dart +++ b/lib/domain/syndication/syndication.dart @@ -17,7 +17,7 @@ class Syndication { factory Syndication.parse(XmlElement element) { SyndicationUpdatePeriod updatePeriod; - switch (element.findElements('sy:updatePeriod').firstOrNull?.text) { + switch (element.findElements('sy:updatePeriod').firstOrNull?.value) { case 'hourly': updatePeriod = SyndicationUpdatePeriod.hourly; break; @@ -40,9 +40,9 @@ class Syndication { return Syndication( updatePeriod: updatePeriod, updateFrequency: int.tryParse( - element.findElements('sy:updateFrequency').firstOrNull?.text ?? '1'), + element.findElements('sy:updateFrequency').firstOrNull?.value ?? '1'), updateBase: parseDateTime( - element.findElements('sy:updateBase').firstOrNull?.text), + element.findElements('sy:updateBase').firstOrNull?.value), ); } } diff --git a/lib/util/xml.dart b/lib/util/xml.dart index 045d641..4894017 100644 --- a/lib/util/xml.dart +++ b/lib/util/xml.dart @@ -21,7 +21,8 @@ Iterable? findElements( } bool parseBoolLiteral(XmlElement element, String tagName) { - var v = element.findElements(tagName).firstOrNull?.text.toLowerCase().trim(); + var v = + element.findElements(tagName).firstOrNull?.value?.toLowerCase().trim(); if (v == null) return false; return ['yes', 'true'].contains(v); } diff --git a/pubspec.lock b/pubspec.lock index 4647c80..3d56dd7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,26 +5,31 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + sha256: "5aaf60d96c4cd00fe7f21594b5ad6a1b699c80a27420f8a837f4d68473ef09e3" url: "https://pub.dev" source: hosted - version: "64.0.0" + version: "68.0.0" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.1.0" analyzer: dependency: transitive description: name: analyzer - sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + sha256: "21f1d3720fd1c70316399d5e2bccaebb415c434592d778cce8acb967b8578808" url: "https://pub.dev" source: hosted - version: "6.2.0" + version: "6.5.0" args: dependency: transitive description: name: args - sha256: b003c3098049a51720352d219b0bb5f219b60fbfb68e7a4748139a06a5676515 + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.5.0" async: dependency: transitive description: @@ -37,10 +42,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "5bbf32bc9e518d41ec49718e2931cd4527292c9b0c6d2dffcf7fe6b9a8a8cf72" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" clock: dependency: transitive description: @@ -61,66 +66,66 @@ packages: dependency: transitive description: name: convert - sha256: "196284f26f69444b7f5c50692b55ec25da86d9e500451dc09333bf2e3ad69259" + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.1.1" coverage: dependency: transitive description: name: coverage - sha256: a6016ec1bc4c645cdc4f3dc931ac281ef3c96404a6a9a3096ac9a100c941fd1f + sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e" url: "https://pub.dev" source: hosted - version: "1.6.0" + version: "1.8.0" crypto: dependency: transitive description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" file: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "4.0.0" frontend_server_client: dependency: transitive description: name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "4.0.0" glob: dependency: transitive description: name: glob - sha256: c51b4fdfee4d281f49b8c957f1add91b815473597f76bcf07377987f66a55729 + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" http: dependency: "direct dev" description: name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.1" http_multi_server: dependency: transitive description: @@ -133,82 +138,90 @@ packages: dependency: transitive description: name: http_parser - sha256: db3060f22889f3d9d55f6a217565486737037eec3609f7f3eca4d0c67ee0d8a0 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" intl: dependency: "direct main" description: name: intl - sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf url: "https://pub.dev" source: hosted - version: "0.18.1" + version: "0.19.0" io: dependency: transitive description: name: io - sha256: "0d4c73c3653ab85bf696d51a9657604c900a370549196a91f33e4c39af760852" + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" js: dependency: transitive description: name: js - sha256: a5e201311cb08bf3912ebbe9a2be096e182d703f881136ec1e81a2338a9e120d + sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.7.1" lints: dependency: transitive description: name: lints - sha256: "5cfd6509652ff5e7fe149b6df4859e687fca9048437857cb2e65c8d780f396e3" + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "4.0.0" logging: dependency: transitive description: name: logging - sha256: "293ae2d49fd79d4c04944c3a26dfd313382d5f52e821ec57119230ae16031ad4" + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.2.0" + macros: + dependency: transitive + description: + name: macros + sha256: "12e8a9842b5a7390de7a781ec63d793527582398d16ea26c60fed58833c9ae79" + url: "https://pub.dev" + source: hosted + version: "0.1.0-main.0" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.15.0" mime: dependency: transitive description: name: mime - sha256: dab22e92b41aa1255ea90ddc4bc2feaf35544fd0728e209638cad041a6e3928a + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.5" node_preamble: dependency: transitive description: name: node_preamble - sha256: "8ebdbaa3b96d5285d068f80772390d27c21e1fa10fb2df6627b1b9415043608d" + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.2" package_config: dependency: transitive description: @@ -221,18 +234,18 @@ packages: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.0" petitparser: dependency: transitive description: name: petitparser - sha256: eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6 + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 url: "https://pub.dev" source: hosted - version: "6.0.1" + version: "6.0.2" pool: dependency: transitive description: @@ -245,90 +258,90 @@ packages: dependency: transitive description: name: pub_semver - sha256: "816c1a640e952d213ddd223b3e7aafae08cd9f8e1f6864eed304cc13b0272b07" + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" shelf: dependency: transitive description: name: shelf - sha256: "8ec607599dd0a78931a5114cdac7d609b6dbbf479a38acc9a6dba024b2a30ea0" + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.1" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler - sha256: aef74dc9195746a384843102142ab65b6a4735bb3beea791e63527b88cc83306 + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" shelf_static: dependency: transitive description: name: shelf_static - sha256: e792b76b96a36d4a41b819da593aff4bdd413576b3ba6150df5d8d9996d2e74c + sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - sha256: "6db16374bc3497d21aa0eebe674d3db9fdf82082aac0f04dc7b44e4af5b08afc" + sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "2.0.0" source_map_stack_trace: dependency: transitive description: name: source_map_stack_trace - sha256: "8c463326277f68a628abab20580047b419c2ff66756fd0affd451f73f9508c11" + sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" source_maps: dependency: transitive description: name: source_maps - sha256: "52de2200bb098de739794c82d09c41ac27b2e42fd7e23cce7b9c74bf653c7296" + sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" url: "https://pub.dev" source: hosted - version: "0.10.10" + version: "0.10.12" source_span: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: f8d9f247e2f9f90e32d1495ff32dac7e4ae34ffa7194c5ff8fcc0fd0e52df774 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: db47e4797198ee601990820437179bb90219f918962318d494ada2b4b11e6f6d + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" string_scanner: dependency: transitive description: name: string_scanner - sha256: "862015c5db1f3f3c4ea3b94dc2490363a84262994b88902315ed74be1155612f" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" term_glyph: dependency: transitive description: @@ -341,81 +354,97 @@ packages: dependency: "direct dev" description: name: test - sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" + sha256: d11b55850c68c1f6c0cf00eabded4e66c4043feaf6c0d7ce4a36785137df6331 url: "https://pub.dev" source: hosted - version: "1.24.6" + version: "1.25.5" test_api: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "2419f20b0c8677b2d67c8ac4d1ac7372d862dc6c460cdbb052b40155408cd794" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.1" test_core: dependency: transitive description: name: test_core - sha256: "4bef837e56375537055fdbbbf6dd458b1859881f4c7e6da936158f77d61ab265" + sha256: "4d070a6bc36c1c4e89f20d353bfd71dc30cdf2bd0e14349090af360a029ab292" url: "https://pub.dev" source: hosted - version: "0.5.6" + version: "0.6.2" typed_data: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" vm_service: dependency: transitive description: name: vm_service - sha256: e7fb6c2282f7631712b69c19d1bff82f3767eea33a2321c14fa59ad67ea391c7 + sha256: "360c4271613beb44db559547d02f8b0dc044741d0eeb9aa6ccdb47e8ec54c63a" url: "https://pub.dev" source: hosted - version: "9.4.0" + version: "14.2.3" watcher: dependency: transitive description: name: watcher - sha256: e42dfcc48f67618344da967b10f62de57e04bae01d9d3af4c2596f3712a88c99 + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + url: "https://pub.dev" + source: hosted + version: "0.5.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "24301d8c293ce6fe327ffe6f59d8fd8834735f0ec36e4fd383ec7ff8a64aa078" + url: "https://pub.dev" + source: hosted + version: "0.1.5" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "3a969ddcc204a3e34e863d204b29c0752716f78b6f9cc8235083208d268a4ccd" + sha256: a2d56211ee4d35d9b344d9d4ce60f362e4f5d1aafb988302906bd732bc731276 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "3.0.0" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol - sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" xml: dependency: "direct main" description: name: xml - sha256: af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556 + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 url: "https://pub.dev" source: hosted - version: "6.4.2" + version: "6.5.0" yaml: dependency: transitive description: name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" sdks: - dart: ">=3.0.0 <4.0.0" + dart: ">=3.4.0-256.0.dev <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index feb52d9..eed1f77 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,16 +3,16 @@ name: webfeed_plus description: webfeed_plus is a dart package for parsing RSS and Atom feeds. Media, DublinCore, iTunes, Syndication namespaces are also supported. homepage: https://github.com/OmkarDabade/webfeed_plus -version: 1.0.1+1 +version: 1.1.0 environment: sdk: ">=3.0.0 <4.0.0" dependencies: xml: ^6.4.2 - intl: ^0.18.1 + intl: ^0.19.0 dev_dependencies: - flutter_lints: ^2.0.2 + flutter_lints: ^4.0.0 test: ^1.24.6 http: ^1.1.0 diff --git a/test/atom_test.dart b/test/atom_test.dart index 6d56c2f..c80ed01 100644 --- a/test/atom_test.dart +++ b/test/atom_test.dart @@ -12,7 +12,7 @@ void main() { AtomFeed.parse(xmlString); fail('Should throw Argument Error'); } on ArgumentError { - print('Argument Error'); + fail('Argument Error'); } }); diff --git a/test/rss_test.dart b/test/rss_test.dart index 3d9f925..54444c7 100644 --- a/test/rss_test.dart +++ b/test/rss_test.dart @@ -15,7 +15,7 @@ void main() { RssFeed.parse(xmlString); fail('Should throw Argument Error'); } on ArgumentError { - print('Argument Error'); + fail('Argument Error'); } }); test('parse RSS.xml', () { From 5a6aeab7659d0df9434456a05325c6682adf20ee Mon Sep 17 00:00:00 2001 From: niom11 Date: Wed, 5 Jun 2024 08:31:25 +0200 Subject: [PATCH 8/8] Replace value by innerText --- lib/domain/atom_feed.dart | 45 +++----- lib/domain/atom_item.dart | 38 ++----- lib/domain/atom_person.dart | 6 +- lib/domain/atom_source.dart | 6 +- lib/domain/dublin_core/dublin_core.dart | 36 +++--- lib/domain/itunes/itunes.dart | 55 +++------- lib/domain/itunes/itunes_owner.dart | 4 +- lib/domain/media/media.dart | 140 ++++++------------------ lib/domain/media/scene.dart | 8 +- lib/domain/rss_feed.dart | 59 ++++------ lib/domain/rss_image.dart | 6 +- lib/domain/rss_item.dart | 35 ++---- lib/domain/syndication/syndication.dart | 8 +- lib/util/xml.dart | 3 +- pubspec.yaml | 2 +- 15 files changed, 139 insertions(+), 312 deletions(-) diff --git a/lib/domain/atom_feed.dart b/lib/domain/atom_feed.dart index 8da3f24..98c1aec 100644 --- a/lib/domain/atom_feed.dart +++ b/lib/domain/atom_feed.dart @@ -47,38 +47,19 @@ class AtomFeed { } return AtomFeed( - id: feedElement.findElements('id').firstOrNull?.value, - title: feedElement.findElements('title').firstOrNull?.value, - updated: - parseDateTime(feedElement.findElements('updated').firstOrNull?.value), - items: feedElement - .findElements('entry') - .map((e) => AtomItem.parse(e)) - .toList(), - links: feedElement - .findElements('link') - .map((e) => AtomLink.parse(e)) - .toList(), - authors: feedElement - .findElements('author') - .map((e) => AtomPerson.parse(e)) - .toList(), - contributors: feedElement - .findElements('contributor') - .map((e) => AtomPerson.parse(e)) - .toList(), - categories: feedElement - .findElements('category') - .map((e) => AtomCategory.parse(e)) - .toList(), - generator: feedElement - .findElements('generator') - .map((e) => AtomGenerator.parse(e)) - .firstOrNull, - icon: feedElement.findElements('icon').firstOrNull?.value, - logo: feedElement.findElements('logo').firstOrNull?.value, - rights: feedElement.findElements('rights').firstOrNull?.value, - subtitle: feedElement.findElements('subtitle').firstOrNull?.value, + id: feedElement.findElements('id').firstOrNull?.innerText, + title: feedElement.findElements('title').firstOrNull?.innerText, + updated: parseDateTime(feedElement.findElements('updated').firstOrNull?.innerText), + items: feedElement.findElements('entry').map((e) => AtomItem.parse(e)).toList(), + links: feedElement.findElements('link').map((e) => AtomLink.parse(e)).toList(), + authors: feedElement.findElements('author').map((e) => AtomPerson.parse(e)).toList(), + contributors: feedElement.findElements('contributor').map((e) => AtomPerson.parse(e)).toList(), + categories: feedElement.findElements('category').map((e) => AtomCategory.parse(e)).toList(), + generator: feedElement.findElements('generator').map((e) => AtomGenerator.parse(e)).firstOrNull, + icon: feedElement.findElements('icon').firstOrNull?.innerText, + logo: feedElement.findElements('logo').firstOrNull?.innerText, + rights: feedElement.findElements('rights').firstOrNull?.innerText, + subtitle: feedElement.findElements('subtitle').firstOrNull?.innerText, ); } } diff --git a/lib/domain/atom_item.dart b/lib/domain/atom_item.dart index 4056492..9db0581 100644 --- a/lib/domain/atom_item.dart +++ b/lib/domain/atom_item.dart @@ -41,32 +41,18 @@ class AtomItem { factory AtomItem.parse(XmlElement element) { return AtomItem( - id: element.findElements('id').firstOrNull?.value, - title: element.findElements('title').firstOrNull?.value, - updated: - parseDateTime(element.findElements('updated').firstOrNull?.value), - authors: element - .findElements('author') - .map((e) => AtomPerson.parse(e)) - .toList(), - links: - element.findElements('link').map((e) => AtomLink.parse(e)).toList(), - categories: element - .findElements('category') - .map((e) => AtomCategory.parse(e)) - .toList(), - contributors: element - .findElements('contributor') - .map((e) => AtomPerson.parse(e)) - .toList(), - source: element - .findElements('source') - .map((e) => AtomSource.parse(e)) - .firstOrNull, - published: element.findElements('published').firstOrNull?.value, - content: element.findElements('content').firstOrNull?.value, - summary: element.findElements('summary').firstOrNull?.value, - rights: element.findElements('rights').firstOrNull?.value, + id: element.findElements('id').firstOrNull?.innerText, + title: element.findElements('title').firstOrNull?.innerText, + updated: parseDateTime(element.findElements('updated').firstOrNull?.innerText), + authors: element.findElements('author').map((e) => AtomPerson.parse(e)).toList(), + links: element.findElements('link').map((e) => AtomLink.parse(e)).toList(), + categories: element.findElements('category').map((e) => AtomCategory.parse(e)).toList(), + contributors: element.findElements('contributor').map((e) => AtomPerson.parse(e)).toList(), + source: element.findElements('source').map((e) => AtomSource.parse(e)).firstOrNull, + published: element.findElements('published').firstOrNull?.innerText, + content: element.findElements('content').firstOrNull?.innerText, + summary: element.findElements('summary').firstOrNull?.innerText, + rights: element.findElements('rights').firstOrNull?.innerText, media: Media.parse(element), ); } diff --git a/lib/domain/atom_person.dart b/lib/domain/atom_person.dart index 98ced85..febfbf4 100644 --- a/lib/domain/atom_person.dart +++ b/lib/domain/atom_person.dart @@ -10,9 +10,9 @@ class AtomPerson { factory AtomPerson.parse(XmlElement element) { return AtomPerson( - name: element.findElements('name').firstOrNull?.value, - uri: element.findElements('uri').firstOrNull?.value, - email: element.findElements('email').firstOrNull?.value, + name: element.findElements('name').firstOrNull?.innerText, + uri: element.findElements('uri').firstOrNull?.innerText, + email: element.findElements('email').firstOrNull?.innerText, ); } } diff --git a/lib/domain/atom_source.dart b/lib/domain/atom_source.dart index 9098b29..488d2d0 100644 --- a/lib/domain/atom_source.dart +++ b/lib/domain/atom_source.dart @@ -14,9 +14,9 @@ class AtomSource { factory AtomSource.parse(XmlElement element) { return AtomSource( - id: element.findElements('id').firstOrNull?.value, - title: element.findElements('title').firstOrNull?.value, - updated: element.findElements('updated').firstOrNull?.value, + id: element.findElements('id').firstOrNull?.innerText, + title: element.findElements('title').firstOrNull?.innerText, + updated: element.findElements('updated').firstOrNull?.innerText, ); } } diff --git a/lib/domain/dublin_core/dublin_core.dart b/lib/domain/dublin_core/dublin_core.dart index 49a7b91..5247d72 100644 --- a/lib/domain/dublin_core/dublin_core.dart +++ b/lib/domain/dublin_core/dublin_core.dart @@ -43,25 +43,23 @@ class DublinCore { factory DublinCore.parse(XmlElement element) { return DublinCore( - title: element.findElements('dc:title').firstOrNull?.value, - description: element.findElements('dc:description').firstOrNull?.value, - creator: element.findElements('dc:creator').firstOrNull?.value, - subject: element.findElements('dc:subject').firstOrNull?.value, - publisher: element.findElements('dc:publisher').firstOrNull?.value, - contributor: element.findElements('dc:contributor').firstOrNull?.value, - date: parseDateTime(element.findElements('dc:date').firstOrNull?.value), - created: - parseDateTime(element.findElements('dc:created').firstOrNull?.value), - modified: - parseDateTime(element.findElements('dc:modified').firstOrNull?.value), - type: element.findElements('dc:type').firstOrNull?.value, - format: element.findElements('dc:format').firstOrNull?.value, - identifier: element.findElements('dc:identifier').firstOrNull?.value, - source: element.findElements('dc:source').firstOrNull?.value, - language: element.findElements('dc:language').firstOrNull?.value, - relation: element.findElements('dc:relation').firstOrNull?.value, - coverage: element.findElements('dc:coverage').firstOrNull?.value, - rights: element.findElements('dc:rights').firstOrNull?.value, + title: element.findElements('dc:title').firstOrNull?.innerText, + description: element.findElements('dc:description').firstOrNull?.innerText, + creator: element.findElements('dc:creator').firstOrNull?.innerText, + subject: element.findElements('dc:subject').firstOrNull?.innerText, + publisher: element.findElements('dc:publisher').firstOrNull?.innerText, + contributor: element.findElements('dc:contributor').firstOrNull?.innerText, + date: parseDateTime(element.findElements('dc:date').firstOrNull?.innerText), + created: parseDateTime(element.findElements('dc:created').firstOrNull?.innerText), + modified: parseDateTime(element.findElements('dc:modified').firstOrNull?.innerText), + type: element.findElements('dc:type').firstOrNull?.innerText, + format: element.findElements('dc:format').firstOrNull?.innerText, + identifier: element.findElements('dc:identifier').firstOrNull?.innerText, + source: element.findElements('dc:source').firstOrNull?.innerText, + language: element.findElements('dc:language').firstOrNull?.innerText, + relation: element.findElements('dc:relation').firstOrNull?.innerText, + coverage: element.findElements('dc:coverage').firstOrNull?.innerText, + rights: element.findElements('dc:rights').firstOrNull?.innerText, ); } } diff --git a/lib/domain/itunes/itunes.dart b/lib/domain/itunes/itunes.dart index b2290f8..e931736 100644 --- a/lib/domain/itunes/itunes.dart +++ b/lib/domain/itunes/itunes.dart @@ -47,53 +47,28 @@ class Itunes { }); factory Itunes.parse(XmlElement element) { - final episodeStr = - element.findElements('itunes:episode').firstOrNull?.value ?? ''; - final seasonStr = - element.findElements('itunes:season').firstOrNull?.value ?? ''; - final durationStr = - element.findElements('itunes:duration').firstOrNull?.value ?? ''; + final episodeStr = element.findElements('itunes:episode').firstOrNull?.innerText ?? ''; + final seasonStr = element.findElements('itunes:season').firstOrNull?.innerText ?? ''; + final durationStr = element.findElements('itunes:duration').firstOrNull?.innerText ?? ''; return Itunes( - author: element.findElements('itunes:author').firstOrNull?.value, - summary: element.findElements('itunes:summary').firstOrNull?.value, + author: element.findElements('itunes:author').firstOrNull?.innerText, + summary: element.findElements('itunes:summary').firstOrNull?.innerText, explicit: parseBoolLiteral(element, 'itunes:explicit'), - title: element.findElements('itunes:title').firstOrNull?.value, - subtitle: element.findElements('itunes:subtitle').firstOrNull?.value, - owner: element - .findElements('itunes:owner') - .map((e) => ItunesOwner.parse(e)) - .firstOrNull, - keywords: element - .findElements('itunes:keywords') - .firstOrNull - ?.value - ?.split(',') - .map((keyword) => keyword.trim()) - .toList() ?? - [], - image: element - .findElements('itunes:image') - .map((e) => ItunesImage.parse(e)) - .firstOrNull, - categories: element - .findElements('itunes:category') - .map((e) => ItunesCategory.parse(e)) - .toList(), - type: element - .findElements('itunes:type') - .map((e) => newItunesType(e)) - .firstOrNull, - newFeedUrl: - element.findElements('itunes:new-feed-url').firstOrNull?.value, + title: element.findElements('itunes:title').firstOrNull?.innerText, + subtitle: element.findElements('itunes:subtitle').firstOrNull?.innerText, + owner: element.findElements('itunes:owner').map((e) => ItunesOwner.parse(e)).firstOrNull, + keywords: + element.findElements('itunes:keywords').firstOrNull?.value?.split(',').map((keyword) => keyword.trim()).toList() ?? [], + image: element.findElements('itunes:image').map((e) => ItunesImage.parse(e)).firstOrNull, + categories: element.findElements('itunes:category').map((e) => ItunesCategory.parse(e)).toList(), + type: element.findElements('itunes:type').map((e) => newItunesType(e)).firstOrNull, + newFeedUrl: element.findElements('itunes:new-feed-url').firstOrNull?.innerText, block: parseBoolLiteral(element, 'itunes:block'), complete: parseBoolLiteral(element, 'itunes:complete'), episode: episodeStr.isNotEmpty ? int.tryParse(episodeStr) : null, season: seasonStr.isNotEmpty ? int.tryParse(seasonStr) : null, duration: durationStr.isNotEmpty ? _parseDuration(durationStr) : null, - episodeType: element - .findElements('itunes:episodeType') - .map((e) => newItunesEpisodeType(e)) - .firstOrNull, + episodeType: element.findElements('itunes:episodeType').map((e) => newItunesEpisodeType(e)).firstOrNull, ); } diff --git a/lib/domain/itunes/itunes_owner.dart b/lib/domain/itunes/itunes_owner.dart index b242ba2..af42e08 100644 --- a/lib/domain/itunes/itunes_owner.dart +++ b/lib/domain/itunes/itunes_owner.dart @@ -9,8 +9,8 @@ class ItunesOwner { factory ItunesOwner.parse(XmlElement element) { return ItunesOwner( - name: element.findElements('itunes:name').firstOrNull?.value?.trim(), - email: element.findElements('itunes:email').firstOrNull?.value?.trim(), + name: element.findElements('itunes:name').firstOrNull?.innerText?.trim(), + email: element.findElements('itunes:email').firstOrNull?.innerText?.trim(), ); } } diff --git a/lib/domain/media/media.dart b/lib/domain/media/media.dart index 73ce85b..0157ca1 100644 --- a/lib/domain/media/media.dart +++ b/lib/domain/media/media.dart @@ -80,114 +80,38 @@ class Media { factory Media.parse(XmlElement element) { return Media( - group: element - .findElements('media:group') - .map((e) => Group.parse(e)) - .firstOrNull, - contents: element - .findElements('media:content') - .map((e) => Content.parse(e)) - .toList(), - credits: element - .findElements('media:credit') - .map((e) => Credit.parse(e)) - .toList(), - category: element - .findElements('media:category') - .map((e) => Category.parse(e)) - .firstOrNull, - rating: element - .findElements('media:rating') - .map((e) => Rating.parse(e)) - .firstOrNull, - title: findElements(element, 'media:title') - ?.map((e) => Title.parse(e)) - .firstOrNull, - description: element - .findElements('media:description') - .map((e) => Description.parse(e)) - .firstOrNull, - keywords: element.findElements('media:keywords').firstOrNull?.value, - thumbnails: element - .findElements('media:thumbnail') - .map((e) => Thumbnail.parse(e)) - .toList(), - hash: element - .findElements('media:hash') - .map((e) => Hash.parse(e)) - .firstOrNull, - player: element - .findElements('media:player') - .map((e) => Player.parse(e)) - .firstOrNull, - copyright: element - .findElements('media:copyright') - .map((e) => Copyright.parse(e)) - .firstOrNull, - text: element - .findElements('media:text') - .map((e) => Text.parse(e)) - .firstOrNull, - restriction: element - .findElements('media:restriction') - .map((e) => Restriction.parse(e)) - .firstOrNull, - community: element - .findElements('media:community') - .map((e) => Community.parse(e)) - .firstOrNull, - comments: element - .findElements('media:comments') - .firstOrNull - ?.findElements('media:comment') - .map((e) => e.innerText) - .toList() ?? - [], - embed: element - .findElements('media:embed') - .map((e) => Embed.parse(e)) - .firstOrNull, - responses: element - .findElements('media:responses') - .firstOrNull - ?.findElements('media:response') - .map((e) => e.innerText) - .toList() ?? - [], - backLinks: element - .findElements('media:backLinks') - .firstOrNull - ?.findElements('media:backLink') - .map((e) => e.innerText) - .toList() ?? - [], - status: element - .findElements('media:status') - .map((e) => Status.parse(e)) - .firstOrNull, - prices: element - .findElements('media:price') - .map((e) => Price.parse(e)) - .toList(), - license: element - .findElements('media:license') - .map((e) => License.parse(e)) - .firstOrNull, - peerLink: element - .findElements('media:peerLink') - .map((e) => PeerLink.parse(e)) - .firstOrNull, - rights: element - .findElements('media:rights') - .map((e) => Rights.parse(e)) - .firstOrNull, - scenes: element - .findElements('media:scenes') - .firstOrNull - ?.findElements('media:scene') - .map((e) => Scene.parse(e)) - .toList() ?? - [], + group: element.findElements('media:group').map((e) => Group.parse(e)).firstOrNull, + contents: element.findElements('media:content').map((e) => Content.parse(e)).toList(), + credits: element.findElements('media:credit').map((e) => Credit.parse(e)).toList(), + category: element.findElements('media:category').map((e) => Category.parse(e)).firstOrNull, + rating: element.findElements('media:rating').map((e) => Rating.parse(e)).firstOrNull, + title: findElements(element, 'media:title')?.map((e) => Title.parse(e)).firstOrNull, + description: element.findElements('media:description').map((e) => Description.parse(e)).firstOrNull, + keywords: element.findElements('media:keywords').firstOrNull?.innerText, + thumbnails: element.findElements('media:thumbnail').map((e) => Thumbnail.parse(e)).toList(), + hash: element.findElements('media:hash').map((e) => Hash.parse(e)).firstOrNull, + player: element.findElements('media:player').map((e) => Player.parse(e)).firstOrNull, + copyright: element.findElements('media:copyright').map((e) => Copyright.parse(e)).firstOrNull, + text: element.findElements('media:text').map((e) => Text.parse(e)).firstOrNull, + restriction: element.findElements('media:restriction').map((e) => Restriction.parse(e)).firstOrNull, + community: element.findElements('media:community').map((e) => Community.parse(e)).firstOrNull, + comments: + element.findElements('media:comments').firstOrNull?.findElements('media:comment').map((e) => e.innerText).toList() ?? + [], + embed: element.findElements('media:embed').map((e) => Embed.parse(e)).firstOrNull, + responses: + element.findElements('media:responses').firstOrNull?.findElements('media:response').map((e) => e.innerText).toList() ?? + [], + backLinks: + element.findElements('media:backLinks').firstOrNull?.findElements('media:backLink').map((e) => e.innerText).toList() ?? + [], + status: element.findElements('media:status').map((e) => Status.parse(e)).firstOrNull, + prices: element.findElements('media:price').map((e) => Price.parse(e)).toList(), + license: element.findElements('media:license').map((e) => License.parse(e)).firstOrNull, + peerLink: element.findElements('media:peerLink').map((e) => PeerLink.parse(e)).firstOrNull, + rights: element.findElements('media:rights').map((e) => Rights.parse(e)).firstOrNull, + scenes: + element.findElements('media:scenes').firstOrNull?.findElements('media:scene').map((e) => Scene.parse(e)).toList() ?? [], ); } } diff --git a/lib/domain/media/scene.dart b/lib/domain/media/scene.dart index d4ad133..9e57997 100644 --- a/lib/domain/media/scene.dart +++ b/lib/domain/media/scene.dart @@ -16,10 +16,10 @@ class Scene { factory Scene.parse(XmlElement element) { return Scene( - title: element.findElements('sceneTitle').firstOrNull?.value, - description: element.findElements('sceneDescription').firstOrNull?.value, - startTime: element.findElements('sceneStartTime').firstOrNull?.value, - endTime: element.findElements('sceneEndTime').firstOrNull?.value, + title: element.findElements('sceneTitle').firstOrNull?.innerText, + description: element.findElements('sceneDescription').firstOrNull?.innerText, + startTime: element.findElements('sceneStartTime').firstOrNull?.innerText, + endTime: element.findElements('sceneEndTime').firstOrNull?.innerText, ); } } diff --git a/lib/domain/rss_feed.dart b/lib/domain/rss_feed.dart index 8ae86a8..d424502 100644 --- a/lib/domain/rss_feed.dart +++ b/lib/domain/rss_feed.dart @@ -72,34 +72,16 @@ class RssFeed { throw ArgumentError('channel not found'); } return RssFeed( - title: channelElement.findElements('title').firstOrNull?.value, - author: channelElement.findElements('author').firstOrNull?.value, - description: - channelElement.findElements('description').firstOrNull?.value, - link: channelElement.findElements('link').firstOrNull?.value, - items: (rdf ?? channelElement) - .findElements('item') - .map((e) => RssItem.parse(e)) - .toList(), - image: (rdf ?? channelElement) - .findElements('image') - .map((e) => RssImage.parse(e)) - .firstOrNull, - cloud: channelElement - .findElements('cloud') - .map((e) => RssCloud.parse(e)) - .firstOrNull, - categories: channelElement - .findElements('category') - .map((e) => RssCategory.parse(e)) - .toList(), - skipDays: channelElement - .findElements('skipDays') - .firstOrNull - ?.findAllElements('day') - .map((e) => e.innerText) - .toList() ?? - [], + title: channelElement.findElements('title').firstOrNull?.innerText, + author: channelElement.findElements('author').firstOrNull?.innerText, + description: channelElement.findElements('description').firstOrNull?.innerText, + link: channelElement.findElements('link').firstOrNull?.innerText, + items: (rdf ?? channelElement).findElements('item').map((e) => RssItem.parse(e)).toList(), + image: (rdf ?? channelElement).findElements('image').map((e) => RssImage.parse(e)).firstOrNull, + cloud: channelElement.findElements('cloud').map((e) => RssCloud.parse(e)).firstOrNull, + categories: channelElement.findElements('category').map((e) => RssCategory.parse(e)).toList(), + skipDays: + channelElement.findElements('skipDays').firstOrNull?.findAllElements('day').map((e) => e.innerText).toList() ?? [], skipHours: channelElement .findElements('skipHours') .firstOrNull @@ -107,18 +89,15 @@ class RssFeed { .map((e) => int.tryParse(e.value ?? '') ?? 0) .toList() ?? [], - lastBuildDate: - channelElement.findElements('lastBuildDate').firstOrNull?.value, - language: channelElement.findElements('language').firstOrNull?.value, - generator: channelElement.findElements('generator').firstOrNull?.value, - copyright: channelElement.findElements('copyright').firstOrNull?.value, - docs: channelElement.findElements('docs').firstOrNull?.value, - managingEditor: - channelElement.findElements('managingEditor').firstOrNull?.value, - rating: channelElement.findElements('rating').firstOrNull?.value, - webMaster: channelElement.findElements('webMaster').firstOrNull?.value, - ttl: int.tryParse( - channelElement.findElements('ttl').firstOrNull?.value ?? '0'), + lastBuildDate: channelElement.findElements('lastBuildDate').firstOrNull?.innerText, + language: channelElement.findElements('language').firstOrNull?.innerText, + generator: channelElement.findElements('generator').firstOrNull?.innerText, + copyright: channelElement.findElements('copyright').firstOrNull?.innerText, + docs: channelElement.findElements('docs').firstOrNull?.innerText, + managingEditor: channelElement.findElements('managingEditor').firstOrNull?.innerText, + rating: channelElement.findElements('rating').firstOrNull?.innerText, + webMaster: channelElement.findElements('webMaster').firstOrNull?.innerText, + ttl: int.tryParse(channelElement.findElements('ttl').firstOrNull?.innerText ?? '0'), dc: DublinCore.parse(channelElement), itunes: Itunes.parse(channelElement), syndication: Syndication.parse(channelElement), diff --git a/lib/domain/rss_image.dart b/lib/domain/rss_image.dart index 60d3e6a..fdcf0ee 100644 --- a/lib/domain/rss_image.dart +++ b/lib/domain/rss_image.dart @@ -10,9 +10,9 @@ class RssImage { factory RssImage.parse(XmlElement element) { return RssImage( - title: element.findElements('title').firstOrNull?.value, - url: element.findElements('url').firstOrNull?.value, - link: element.findElements('link').firstOrNull?.value, + title: element.findElements('title').firstOrNull?.innerText, + url: element.findElements('url').firstOrNull?.innerText, + link: element.findElements('link').firstOrNull?.innerText, ); } } diff --git a/lib/domain/rss_item.dart b/lib/domain/rss_item.dart index 79c76a1..2a8f90c 100644 --- a/lib/domain/rss_item.dart +++ b/lib/domain/rss_item.dart @@ -45,31 +45,18 @@ class RssItem { factory RssItem.parse(XmlElement element) { return RssItem( - title: element.findElements('title').firstOrNull?.value, - description: element.findElements('description').firstOrNull?.value, - link: element.findElements('link').firstOrNull?.value, - categories: element - .findElements('category') - .map((e) => RssCategory.parse(e)) - .toList(), - guid: element.findElements('guid').firstOrNull?.value, - pubDate: - parseDateTime(element.findElements('pubDate').firstOrNull?.value), - author: element.findElements('author').firstOrNull?.value, - comments: element.findElements('comments').firstOrNull?.value, - source: element - .findElements('source') - .map((e) => RssSource.parse(e)) - .firstOrNull, - content: element - .findElements('content:encoded') - .map((e) => RssContent.parse(e)) - .firstOrNull, + title: element.findElements('title').firstOrNull?.innerText, + description: element.findElements('description').firstOrNull?.innerText, + link: element.findElements('link').firstOrNull?.innerText, + categories: element.findElements('category').map((e) => RssCategory.parse(e)).toList(), + guid: element.findElements('guid').firstOrNull?.innerText, + pubDate: parseDateTime(element.findElements('pubDate').firstOrNull?.innerText), + author: element.findElements('author').firstOrNull?.innerText, + comments: element.findElements('comments').firstOrNull?.innerText, + source: element.findElements('source').map((e) => RssSource.parse(e)).firstOrNull, + content: element.findElements('content:encoded').map((e) => RssContent.parse(e)).firstOrNull, media: Media.parse(element), - enclosure: element - .findElements('enclosure') - .map((e) => RssEnclosure.parse(e)) - .firstOrNull, + enclosure: element.findElements('enclosure').map((e) => RssEnclosure.parse(e)).firstOrNull, dc: DublinCore.parse(element), itunes: Itunes.parse(element), ); diff --git a/lib/domain/syndication/syndication.dart b/lib/domain/syndication/syndication.dart index f18781a..c914442 100644 --- a/lib/domain/syndication/syndication.dart +++ b/lib/domain/syndication/syndication.dart @@ -17,7 +17,7 @@ class Syndication { factory Syndication.parse(XmlElement element) { SyndicationUpdatePeriod updatePeriod; - switch (element.findElements('sy:updatePeriod').firstOrNull?.value) { + switch (element.findElements('sy:updatePeriod').firstOrNull?.innerText) { case 'hourly': updatePeriod = SyndicationUpdatePeriod.hourly; break; @@ -39,10 +39,8 @@ class Syndication { } return Syndication( updatePeriod: updatePeriod, - updateFrequency: int.tryParse( - element.findElements('sy:updateFrequency').firstOrNull?.value ?? '1'), - updateBase: parseDateTime( - element.findElements('sy:updateBase').firstOrNull?.value), + updateFrequency: int.tryParse(element.findElements('sy:updateFrequency').firstOrNull?.innerText ?? '1'), + updateBase: parseDateTime(element.findElements('sy:updateBase').firstOrNull?.innerText), ); } } diff --git a/lib/util/xml.dart b/lib/util/xml.dart index 4894017..7e48115 100644 --- a/lib/util/xml.dart +++ b/lib/util/xml.dart @@ -21,8 +21,7 @@ Iterable? findElements( } bool parseBoolLiteral(XmlElement element, String tagName) { - var v = - element.findElements(tagName).firstOrNull?.value?.toLowerCase().trim(); + var v = element.findElements(tagName).firstOrNull?.innerText.toLowerCase().trim(); if (v == null) return false; return ['yes', 'true'].contains(v); } diff --git a/pubspec.yaml b/pubspec.yaml index eed1f77..3800ac3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,7 +9,7 @@ environment: sdk: ">=3.0.0 <4.0.0" dependencies: - xml: ^6.4.2 + xml: ^6.5.0 intl: ^0.19.0 dev_dependencies: