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() { hosts = ['telegram.org']; name = 'Telegram ${tr('app')}'; } @override String sourceSpecificStandardizeURL(String url, {bool forSelection = false}) { return 'https://${hosts[0]}'; } @override Future getLatestAPKDetails( String standardUrl, Map additionalSettings, ) async { Response res = await sourceRequest( 'https://t.me/s/TAndroidAPK', additionalSettings, ); 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, [ MapEntry('telegram-$version.apk', apkUrl), ], AppNames('Telegram', 'Telegram')); } else { throw getObtainiumHttpError(res); } } }