diff --git a/packages/wyatt_medium_feeds/.gitignore b/packages/wyatt_medium_feeds/.gitignore deleted file mode 100644 index 65c34dc8..00000000 --- a/packages/wyatt_medium_feeds/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -# Files and directories created by pub. -.dart_tool/ -.packages - -# Conventional directory for build outputs. -build/ - -# Omit committing pubspec.lock for library packages; see -# https://dart.dev/guides/libraries/private-files#pubspeclock. -pubspec.lock diff --git a/packages/wyatt_medium_feeds/.vscode/extensions.json b/packages/wyatt_medium_feeds/.vscode/extensions.json deleted file mode 100644 index 30cd2233..00000000 --- a/packages/wyatt_medium_feeds/.vscode/extensions.json +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2022 WYATT GROUP - * Please see the AUTHORS file for details. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -{ - "recommendations": [ - "psioniq.psi-header", - "blaugold.melos-code" - ] -} \ No newline at end of file diff --git a/packages/wyatt_medium_feeds/.vscode/settings.json b/packages/wyatt_medium_feeds/.vscode/settings.json deleted file mode 100644 index 708f5ba6..00000000 --- a/packages/wyatt_medium_feeds/.vscode/settings.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "psi-header.changes-tracking": { - "isActive": true - }, - "psi-header.config": { - "blankLinesAfter": 1, - "forceToTop": true - }, - "psi-header.lang-config": [ - { - "beforeHeader": [ - "# -*- coding:utf-8 -*-", - "#!/usr/bin/env python3" - ], - "begin": "###", - "end": "###", - "language": "python", - "prefix": "# " - }, - { - "beforeHeader": [ - "#!/usr/bin/env sh", - "" - ], - "language": "shellscript", - "begin": "", - "end": "", - "prefix": "# " - }, - { - "begin": "", - "end": "", - "language": "dart", - "prefix": "// " - }, - { - "begin": "", - "end": "", - "language": "yaml", - "prefix": "# " - }, - { - "begin": "", - "language": "markdown", - }, - ], - "psi-header.templates": [ - { - "language": "*", - "template": [ - "Copyright (C) <> WYATT GROUP", - "Please see the AUTHORS file for details.", - "", - "This program is free software: you can redistribute it and/or modify", - "it under the terms of the GNU General Public License as published by", - "the Free Software Foundation, either version 3 of the License, or", - "any later version.", - "", - "This program is distributed in the hope that it will be useful,", - "but WITHOUT ANY WARRANTY; without even the implied warranty of", - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the", - "GNU General Public License for more details.", - "", - "You should have received a copy of the GNU General Public License", - "along with this program. If not, see ." - ], - } - ], - "dart.runPubGetOnPubspecChanges": false, -} \ No newline at end of file diff --git a/packages/wyatt_medium_feeds/CHANGELOG.md b/packages/wyatt_medium_feeds/CHANGELOG.md deleted file mode 100644 index 8e60bdbd..00000000 --- a/packages/wyatt_medium_feeds/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -## 1.0.1 - - - **FIX**: remove useless example file. - -## 1.0.0 - -- Initial version. diff --git a/packages/wyatt_medium_feeds/README.md b/packages/wyatt_medium_feeds/README.md deleted file mode 100644 index 8b55e735..00000000 --- a/packages/wyatt_medium_feeds/README.md +++ /dev/null @@ -1,39 +0,0 @@ - - -TODO: Put a short description of the package here that helps potential users -know whether this package might be useful for them. - -## Features - -TODO: List what your package can do. Maybe include images, gifs, or videos. - -## Getting started - -TODO: List prerequisites and provide or point to information on how to -start using the package. - -## Usage - -TODO: Include short and useful examples for package users. Add longer examples -to `/example` folder. - -```dart -const like = 'sample'; -``` - -## Additional information - -TODO: Tell users more about the package: where to find more information, how to -contribute to the package, how to file issues, what response they can expect -from the package authors, and more. diff --git a/packages/wyatt_medium_feeds/analysis_options.yaml b/packages/wyatt_medium_feeds/analysis_options.yaml deleted file mode 100644 index 82177cd5..00000000 --- a/packages/wyatt_medium_feeds/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:wyatt_analysis/analysis_options.flutter.yaml \ No newline at end of file diff --git a/packages/wyatt_medium_feeds/example/.gitignore b/packages/wyatt_medium_feeds/example/.gitignore deleted file mode 100644 index 0fa6b675..00000000 --- a/packages/wyatt_medium_feeds/example/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# 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/ - -# Web related -lib/generated_plugin_registrant.dart - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/packages/wyatt_medium_feeds/example/.metadata b/packages/wyatt_medium_feeds/example/.metadata deleted file mode 100644 index 3c3e4b52..00000000 --- a/packages/wyatt_medium_feeds/example/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# 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 and should not be manually edited. - -version: - revision: 5464c5bac742001448fe4fc0597be939379f88ea - channel: stable - -project_type: app diff --git a/packages/wyatt_medium_feeds/example/README.md b/packages/wyatt_medium_feeds/example/README.md deleted file mode 100644 index f3e776e7..00000000 --- a/packages/wyatt_medium_feeds/example/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# medium_feeds_example - -A new Flutter project. - -## Getting Started - -This project is a starting point for a Flutter application. - -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) - -For help getting started with Flutter, view our -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. diff --git a/packages/wyatt_medium_feeds/example/analysis_options.yaml b/packages/wyatt_medium_feeds/example/analysis_options.yaml deleted file mode 100644 index 61b6c4de..00000000 --- a/packages/wyatt_medium_feeds/example/analysis_options.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# 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: - # avoid_print: false # Uncomment to disable the `avoid_print` rule - # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule - -# Additional information about this file can be found at -# https://dart.dev/guides/language/analysis-options diff --git a/packages/wyatt_medium_feeds/example/lib/article_tile.dart b/packages/wyatt_medium_feeds/example/lib/article_tile.dart deleted file mode 100644 index 833a2580..00000000 --- a/packages/wyatt_medium_feeds/example/lib/article_tile.dart +++ /dev/null @@ -1,76 +0,0 @@ -import 'package:flutter/material.dart'; - -class ArticleTile extends StatelessWidget { - const ArticleTile({ - Key? key, - required this.bannerUrl, - required this.title, - required this.summary, - required this.author, - required this.publishDate, - required this.readingTime, - }) : super(key: key); - - final String bannerUrl; - final String title; - final String summary; - final String author; - final String publishDate; - final String readingTime; - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - children: [ - Container( - height: 200, - decoration: BoxDecoration( - image: DecorationImage( - image: NetworkImage(bannerUrl), - fit: BoxFit.cover, - ), - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - title, - style: Theme.of(context).textTheme.headline6, - ), - const SizedBox(height: 8), - Text( - summary, - style: Theme.of(context).textTheme.bodyText1, - ), - const SizedBox(height: 8), - Row( - children: [ - Text( - author, - style: Theme.of(context).textTheme.caption, - ), - const SizedBox(width: 8), - Text( - publishDate, - style: Theme.of(context).textTheme.caption, - ), - const SizedBox(width: 8), - Text( - readingTime, - style: Theme.of(context).textTheme.caption, - ), - ], - ), - ], - ), - ), - ], - ), - ); - } -} diff --git a/packages/wyatt_medium_feeds/example/lib/main.dart b/packages/wyatt_medium_feeds/example/lib/main.dart deleted file mode 100644 index 3e85dfca..00000000 --- a/packages/wyatt_medium_feeds/example/lib/main.dart +++ /dev/null @@ -1,78 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:medium_feeds_example/article_tile.dart'; -import 'package:wyatt_medium_feeds/wyatt_medium_feeds.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatelessWidget { - const MyApp({Key? key}) : super(key: key); - - // This widget is the root of your application. - @override - Widget build(BuildContext context) { - return MaterialApp( - title: 'Flutter Demo', - theme: ThemeData( - primarySwatch: Colors.blue, - ), - home: const WidgetTree(), - ); - } -} - -class ArticleGrid extends StatelessWidget { - const ArticleGrid({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - final mediumFeed = MediumFeed.fromPublicationName('flutter'); - return FutureBuilder( - future: mediumFeed.parse(), - builder: (context, snapshot) { - if (snapshot.hasData) { - final articles = mediumFeed.articles; - return GridView.builder( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - childAspectRatio: 1, - ), - itemCount: articles.length, - itemBuilder: (context, index) { - final article = articles[index]; - return ArticleTile( - bannerUrl: article.images.isNotEmpty ? article.images[0] : '', - author: article.author, - title: article.title, - summary: article.summary, - readingTime: - article.readingTime.inMinutes.toString() + ' min read', - publishDate: article.publishDate!.day.toString() + - '/' + - article.publishDate!.month.toString() + - '/' + - article.publishDate!.year.toString(), - ); - }, - ); - } else { - return const Center(child: CircularProgressIndicator()); - } - }); - } -} - -class WidgetTree extends StatelessWidget { - const WidgetTree({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('Medium Feeds Example'), - ), - body: const ArticleGrid(), - ); - } -} diff --git a/packages/wyatt_medium_feeds/example/pubspec.yaml b/packages/wyatt_medium_feeds/example/pubspec.yaml deleted file mode 100644 index 8d11c3eb..00000000 --- a/packages/wyatt_medium_feeds/example/pubspec.yaml +++ /dev/null @@ -1,93 +0,0 @@ -name: medium_feeds_example -description: A new Flutter project. - -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: 'none' # Remove this line if you wish to publish to pub.dev - -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. -# Read more about iOS versioning at -# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.0+1 - -environment: - sdk: ">=2.16.2 <3.0.0" - -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. -dependencies: - flutter: - sdk: flutter - - - wyatt_medium_feeds: - path: ../ - - - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. - flutter_lints: ^2.0.0 - -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter. -flutter: - - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. - uses-material-design: true - - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware. - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages diff --git a/packages/wyatt_medium_feeds/example/test/widget_test.dart b/packages/wyatt_medium_feeds/example/test/widget_test.dart deleted file mode 100644 index 58823107..00000000 --- a/packages/wyatt_medium_feeds/example/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility that Flutter provides. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:medium_feeds_example/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} diff --git a/packages/wyatt_medium_feeds/example/web/favicon.png b/packages/wyatt_medium_feeds/example/web/favicon.png deleted file mode 100644 index 8aaa46ac..00000000 Binary files a/packages/wyatt_medium_feeds/example/web/favicon.png and /dev/null differ diff --git a/packages/wyatt_medium_feeds/example/web/icons/Icon-192.png b/packages/wyatt_medium_feeds/example/web/icons/Icon-192.png deleted file mode 100644 index b749bfef..00000000 Binary files a/packages/wyatt_medium_feeds/example/web/icons/Icon-192.png and /dev/null differ diff --git a/packages/wyatt_medium_feeds/example/web/icons/Icon-512.png b/packages/wyatt_medium_feeds/example/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48d..00000000 Binary files a/packages/wyatt_medium_feeds/example/web/icons/Icon-512.png and /dev/null differ diff --git a/packages/wyatt_medium_feeds/example/web/icons/Icon-maskable-192.png b/packages/wyatt_medium_feeds/example/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d76..00000000 Binary files a/packages/wyatt_medium_feeds/example/web/icons/Icon-maskable-192.png and /dev/null differ diff --git a/packages/wyatt_medium_feeds/example/web/icons/Icon-maskable-512.png b/packages/wyatt_medium_feeds/example/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c5669..00000000 Binary files a/packages/wyatt_medium_feeds/example/web/icons/Icon-maskable-512.png and /dev/null differ diff --git a/packages/wyatt_medium_feeds/example/web/index.html b/packages/wyatt_medium_feeds/example/web/index.html deleted file mode 100644 index aa53f64a..00000000 --- a/packages/wyatt_medium_feeds/example/web/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - medium_feeds_example - - - - - - - diff --git a/packages/wyatt_medium_feeds/example/web/manifest.json b/packages/wyatt_medium_feeds/example/web/manifest.json deleted file mode 100644 index 45dfbbec..00000000 --- a/packages/wyatt_medium_feeds/example/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "medium_feeds_example", - "short_name": "medium_feeds_example", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "A new Flutter project.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "icons/Icon-maskable-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "icons/Icon-maskable-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -} diff --git a/packages/wyatt_medium_feeds/lib/src/medium_article.dart b/packages/wyatt_medium_feeds/lib/src/medium_article.dart deleted file mode 100644 index cb526ed3..00000000 --- a/packages/wyatt_medium_feeds/lib/src/medium_article.dart +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (C) 2022 WYATT GROUP -// Please see the AUTHORS file for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -import 'package:html/parser.dart'; -import 'package:webfeed/webfeed.dart'; -import 'package:wyatt_medium_feeds/src/reading_time.dart'; - -class MediumArticle { - final RssItem? _item; - - RssItem get item { - if (_item == null) { - throw StateError('Feed has not been parsed yet.'); - } - return _item!; - } - - MediumArticle(this._item); - - String get title => item.title ?? ''; - - String get link => item.link ?? ''; - - String get guid => item.guid ?? ''; - - String get author => item.dc?.creator ?? ''; - - DateTime? get publishDate => item.pubDate; - - String get content => item.content?.value ?? ''; - - List get images { - final images = []; - for (final i in item.content?.images ?? []) { - images.add(i); - } - return images; - } - - String get decoded { - final document = parse(content); - return document.firstChild?.text ?? ''; - } - - String get summary { - final regex = RegExp(r'^.*?[\.!\?](?:\s|$)'); - final match = regex.firstMatch(decoded); - return match?.group(0) ?? ''; - } - - Duration get readingTime { - return decoded.readingTime(); - } -} diff --git a/packages/wyatt_medium_feeds/lib/src/medium_feed.dart b/packages/wyatt_medium_feeds/lib/src/medium_feed.dart deleted file mode 100644 index b574fce4..00000000 --- a/packages/wyatt_medium_feeds/lib/src/medium_feed.dart +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (C) 2022 WYATT GROUP -// Please see the AUTHORS file for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -import 'package:http/http.dart'; -import 'package:webfeed/webfeed.dart'; -import 'package:wyatt_medium_feeds/src/medium_article.dart'; - -class MediumFeed { - final String? username; - final bool mediumSubdomain; - final String? publicationName; - final String? customDomain; - final String? tagName; - final String? topicName; - - final String url; - - RssFeed? _feed; - - RssFeed get feed { - if (_feed == null) { - throw StateError('Feed has not been parsed yet.'); - } - return _feed!; - } - - String get title => feed.title ?? ''; - - String get description => feed.description ?? ''; - - String get image => feed.image?.url ?? ''; - - List get articles { - final articles = []; - for (final i in feed.items ?? []) { - articles.add(MediumArticle(i)); - } - return articles; - } - - MediumFeed.fromUsername( - this.username, { - bool subdomain = false, - String proxy = 'https://cros-anywhere.herokuapp.com/', - }) : mediumSubdomain = subdomain, - publicationName = null, - customDomain = null, - tagName = null, - topicName = null, - url = subdomain - ? '${proxy}https://$username.medium.com/feed' - : '${proxy}https://medium.com/feed/@$username'; - - MediumFeed.fromPublicationName( - this.publicationName, { - String proxy = 'https://cros-anywhere.herokuapp.com/', - }) : username = null, - mediumSubdomain = false, - customDomain = null, - tagName = null, - topicName = null, - url = '${proxy}https://medium.com/feed/$publicationName'; - - MediumFeed.fromCustomDomain( - this.customDomain, { - String proxy = 'https://cros-anywhere.herokuapp.com/', - }) : username = null, - mediumSubdomain = false, - publicationName = null, - tagName = null, - topicName = null, - url = '${proxy}https://$customDomain/feed'; - - MediumFeed.fromTagName({ - this.publicationName, - this.tagName, - String proxy = 'https://cros-anywhere.herokuapp.com/', - }) : username = null, - mediumSubdomain = false, - customDomain = null, - topicName = null, - url = - '${proxy}https://medium.com/feed/$publicationName/tagged/$tagName'; - - MediumFeed.fromTopicName( - this.topicName, { - String proxy = 'https://cros-anywhere.herokuapp.com/', - }) : username = null, - mediumSubdomain = false, - customDomain = null, - publicationName = null, - tagName = null, - url = '${proxy}https://medium.com/feed/tag/$topicName'; - - Future parse() async { - final xmlString = await read(Uri.parse(url)); - _feed = RssFeed.parse(xmlString); - return _feed!; - } -} diff --git a/packages/wyatt_medium_feeds/lib/src/reading_time.dart b/packages/wyatt_medium_feeds/lib/src/reading_time.dart deleted file mode 100644 index 37d9ec8a..00000000 --- a/packages/wyatt_medium_feeds/lib/src/reading_time.dart +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2022 WYATT GROUP -// Please see the AUTHORS file for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -extension ReadingTimeX on String { - Duration readingTime({ - int wpm = 200, - String suffix = 'min read', - String lessMsg = 'less than a minute', - }) { - bool _ansiWordBound(String c) { - return (' ' == c) || ('\n' == c) || ('\r' == c) || ('\t' == c); - } - - int words = 0, start = 0, end = length - 1; - - while (_ansiWordBound(this[start])) { - start++; - } - while (_ansiWordBound(this[end])) { - end--; - } - - // Count real words - for (int i = start; i <= end;) { - for (; i <= end && !_ansiWordBound(this[i]); i++) {} - words++; - for (; i <= end && _ansiWordBound(this[i]); i++) {} - } - - final minutes = words / wpm; - final seconds = (minutes - minutes.floor()) * 60; - final Duration duration = Duration(minutes: minutes.floor(), seconds: seconds.floor()); - return duration; - } -} diff --git a/packages/wyatt_medium_feeds/lib/wyatt_medium_feeds.dart b/packages/wyatt_medium_feeds/lib/wyatt_medium_feeds.dart deleted file mode 100644 index df269550..00000000 --- a/packages/wyatt_medium_feeds/lib/wyatt_medium_feeds.dart +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (C) 2022 WYATT GROUP -// Please see the AUTHORS file for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -library wyatt_medium_feeds; - -export 'src/medium_article.dart'; -export 'src/medium_feed.dart'; -export 'src/reading_time.dart'; diff --git a/packages/wyatt_medium_feeds/pubspec.yaml b/packages/wyatt_medium_feeds/pubspec.yaml deleted file mode 100644 index 485bdacf..00000000 --- a/packages/wyatt_medium_feeds/pubspec.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: wyatt_medium_feeds -description: Medium flux read for Flutter -repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_medium_feeds -version: 1.0.1 - -environment: - sdk: '>=2.16.2 <3.0.0' - -dependencies: - http: ^0.13.4 - webfeed: ^0.7.0 - html: ^0.15.0 - -dev_dependencies: - wyatt_analysis: - git: - url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages - ref: wyatt_analysis-v2.2.2 - path: packages/wyatt_analysis diff --git a/packages/wyatt_medium_feeds/test/wyatt_medium_feeds_test.dart b/packages/wyatt_medium_feeds/test/wyatt_medium_feeds_test.dart deleted file mode 100644 index e69de29b..00000000