From e49a6e311b825c3cf4eda19a77fff8559d8fcfa8 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Sat, 18 Mar 2023 23:09:11 -0400 Subject: [PATCH] Added Telegram App as a Source --- lib/app_sources/neutroncode.dart | 1 - lib/app_sources/telegramapp.dart | 43 ++++++++++++++++++++++++++++++ lib/providers/source_provider.dart | 2 ++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 lib/app_sources/telegramapp.dart diff --git a/lib/app_sources/neutroncode.dart b/lib/app_sources/neutroncode.dart index 0fdbc6c..6baa0a1 100644 --- a/lib/app_sources/neutroncode.dart +++ b/lib/app_sources/neutroncode.dart @@ -1,4 +1,3 @@ -import 'dart:convert'; import 'package:html/parser.dart'; import 'package:http/http.dart'; import 'package:obtainium/custom_errors.dart'; diff --git a/lib/app_sources/telegramapp.dart b/lib/app_sources/telegramapp.dart new file mode 100644 index 0000000..6b249fd --- /dev/null +++ b/lib/app_sources/telegramapp.dart @@ -0,0 +1,43 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:html/parser.dart'; +import 'package:http/http.dart'; +import 'package:obtainium/custom_errors.dart'; +import 'package:obtainium/providers/source_provider.dart'; + +class TelegramApp extends AppSource { + TelegramApp() { + host = 'telegram.org'; + name = 'Telegram ${tr('app')}'; + } + + @override + String standardizeURL(String url) { + return 'https://$host'; + } + + @override + String? changeLogPageFromStandardUrl(String standardUrl) => null; + + @override + Future getLatestAPKDetails( + String standardUrl, + Map additionalSettings, + ) async { + Response res = await get(Uri.parse('https://t.me/s/TAndroidAPK')); + if (res.statusCode == 200) { + var http = parse(res.body); + var messages = + http.querySelectorAll('.tgme_widget_message_text.js-message_text'); + var version = messages.isNotEmpty + ? messages.last.innerHtml.split('\n').first.trim().split(' ').first + : null; + if (version == null) { + throw NoVersionError(); + } + String? apkUrl = 'https://telegram.org/dl/android/apk'; + return APKDetails(version, [apkUrl], AppNames('Telegram', 'Telegram')); + } else { + throw getObtainiumHttpError(res); + } + } +} diff --git a/lib/providers/source_provider.dart b/lib/providers/source_provider.dart index 5b51c7f..f2b7afd 100644 --- a/lib/providers/source_provider.dart +++ b/lib/providers/source_provider.dart @@ -19,6 +19,7 @@ import 'package:obtainium/app_sources/neutroncode.dart'; import 'package:obtainium/app_sources/signal.dart'; import 'package:obtainium/app_sources/sourceforge.dart'; import 'package:obtainium/app_sources/steammobile.dart'; +import 'package:obtainium/app_sources/telegramapp.dart'; import 'package:obtainium/components/generated_form.dart'; import 'package:obtainium/custom_errors.dart'; import 'package:obtainium/mass_app_sources/githubstars.dart'; @@ -339,6 +340,7 @@ class SourceProvider { APKMirror(), FDroidRepo(), SteamMobile(), + TelegramApp(), NeutronCode(), HTML() // This should ALWAYS be the last option as they are tried in order ];