mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-10-20 17:53:46 +02:00
Add 'sky22333/hubproxy' support for GitHub (#2513)
This commit is contained in:
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "استخدام خدمة مقدمة للتحقق من التحديثات (أكثر موثوقية وتستهلك طاقة أكبر)",
|
||||
"fgServiceNotice": "هذا الإشعار مطلوب للتحقق من التحديث في الخلفية (يمكن إخفاؤه في إعدادات نظام التشغيل)",
|
||||
"excludeSecrets": "استبعاد الأسرار",
|
||||
"GHReqPrefix": "مثيل \"sky22333/hubproxy\" لطلبات GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "إزالة التطبيق؟",
|
||||
"other": "إزالة التطبيقات؟"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
|
||||
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
|
||||
"excludeSecrets": "Exclude secrets",
|
||||
"GHReqPrefix": "'sky22333/hubproxy' instance for GitHub requests",
|
||||
"removeAppQuestion": {
|
||||
"one": "Želite li ukloniti aplikaciju?",
|
||||
"other": "Želite li ukloniti aplikacije?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Usa el servei d'Obtainium en primer pla per comprovar les actualitzacions (és més fiable però consumeix més bateria)",
|
||||
"fgServiceNotice": "Aquesta notificació és necessària per comprovar les actualitzacions en segon pla (la pots ocultar als paràmetres del Sistema Operatiu)",
|
||||
"excludeSecrets": "Exclude secrets",
|
||||
"GHReqPrefix": "'sky22333/hubproxy' instance for GitHub requests",
|
||||
"removeAppQuestion": {
|
||||
"one": "¿Suprimeixo l'aplicació?",
|
||||
"other": "¿Suprimeixo les aplicacions?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Použít službu v popředí pro kontrolu aktualizací (spolehlivější, spotřebovává více energie)",
|
||||
"fgServiceNotice": "Toto oznámení je nutné pro kontrolu aktualizací na pozadí (lze jej skrýt v nastavení systému)",
|
||||
"excludeSecrets": "Vyloučit tajemství",
|
||||
"GHReqPrefix": "instance 'sky22333/hubproxy' pro požadavky GitHubu",
|
||||
"removeAppQuestion": {
|
||||
"one": "Odstranit aplikaci?",
|
||||
"other": "Odstranit aplikace?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Brug en forgrundstjeneste til opdateringskontrol (mere pålidelig, bruger mere strøm)",
|
||||
"fgServiceNotice": "Denne meddelelse er nødvendig for baggrundsopdateringskontrol (den kan skjules i OS-indstillingerne).",
|
||||
"excludeSecrets": "Udeluk hemmeligheder",
|
||||
"GHReqPrefix": "'sky22333/hubproxy'-instans til GitHub-anmodninger",
|
||||
"removeAppQuestion": {
|
||||
"one": "Fjern app?",
|
||||
"other": "Fjern apps?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Aktualisierungsprüfung im Vordergrund durchführen (zuverlässiger, verbraucht mehr Strom)",
|
||||
"fgServiceNotice": "Diese Benachrichtigung ist für die Prüfung von Updates im Hintergrund erforderlich (sie kann in den Betriebssystemeinstellungen ausgeblendet werden)",
|
||||
"excludeSecrets": "Geheimnisse ausschließen",
|
||||
"GHReqPrefix": "sky22333/hubproxy'-Instanz für GitHub-Anfragen",
|
||||
"removeAppQuestion": {
|
||||
"one": "App entfernen?",
|
||||
"other": "Apps entfernen?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
|
||||
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
|
||||
"excludeSecrets": "Exclude secrets",
|
||||
"GHReqPrefix": "'sky22333/hubproxy' instance for GitHub requests",
|
||||
"removeAppQuestion": {
|
||||
"one": "Forigi la aplikaĵon?",
|
||||
"other": "Forigi la aplikaĵojn?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
|
||||
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
|
||||
"excludeSecrets": "Exclude secrets",
|
||||
"GHReqPrefix": "'sky22333/hubproxy' instance for GitHub requests",
|
||||
"removeAppQuestion": {
|
||||
"one": "Remove app?",
|
||||
"other": "Remove apps?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Usar un servicio en primer plano para comprobar las actualizaciones (más fiable, consume más energía).",
|
||||
"fgServiceNotice": "Esta notificación es necesaria para la comprobación de actualizaciones en segundo plano (puede ocultarse en la configuración del sistema operativo).",
|
||||
"excludeSecrets": "Excluir secretos",
|
||||
"GHReqPrefix": "Instancia \"sky22333/hubproxy\" para las solicitudes de GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "¿Eliminar aplicación?",
|
||||
"other": "¿Eliminar aplicaciones?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
|
||||
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
|
||||
"excludeSecrets": "Exclude secrets",
|
||||
"GHReqPrefix": "'sky22333/hubproxy' instance for GitHub requests",
|
||||
"removeAppQuestion": {
|
||||
"one": "برنامه حذف شود؟",
|
||||
"other": "برنامه ها حذف شوند؟"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Utiliser un service de premier plan pour la vérification des mises à jour (plus fiable, consomme plus d'énergie)",
|
||||
"fgServiceNotice": "Cette notification est nécessaire pour la vérification des mises à jour en arrière-plan (elle peut être masquée dans les paramètres du système d'exploitation).",
|
||||
"excludeSecrets": "Exclure les secrets",
|
||||
"GHReqPrefix": "instance 'sky22333/hubproxy' pour les requêtes GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "Supprimer l'application ?",
|
||||
"other": "Supprimer les applications ?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Előtér-szolgáltatás használata a frissítések ellenőrzéséhez (megbízhatóbb, de több energiát fogyaszt)",
|
||||
"fgServiceNotice": "Ez az értesítés a háttérben történő frissítésellenőrzéshez szükséges (a rendszer beállításaiban elrejthető).",
|
||||
"excludeSecrets": "Érzékeny adatok (például: személyes hozzáférési tokenek) kihagyása",
|
||||
"GHReqPrefix": "'sky22333/hubproxy' példány a GitHub kérésekhez",
|
||||
"removeAppQuestion": {
|
||||
"one": "Eltávolítja az alkalmazást?",
|
||||
"other": "Eltávolítja az alkalmazásokat?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Gunakan layanan latar depan untuk pemeriksaan pembaruan (lebih dapat diandalkan, menghabiskan lebih banyak daya)",
|
||||
"fgServiceNotice": "Pemberitahuan ini diperlukan untuk pemeriksaan pembaruan latar belakang (dapat disembunyikan dalam pengaturan OS)",
|
||||
"excludeSecrets": "Mengecualikan rahasia",
|
||||
"GHReqPrefix": "Instance 'sky22333/hubproxy' untuk permintaan GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "Hapus aplikasi?",
|
||||
"other": "Hapus aplikasi?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Utilizzare un servizio in primo piano per il controllo degli aggiornamenti (più affidabile, consuma più energia)",
|
||||
"fgServiceNotice": "Questa notifica è necessaria per il controllo degli aggiornamenti in background (può essere nascosta nelle impostazioni del sistema operativo).",
|
||||
"excludeSecrets": "Escludere i segreti",
|
||||
"GHReqPrefix": "istanza 'sky22333/hubproxy' per le richieste a GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "Rimuovere l'app?",
|
||||
"other": "Rimuovere le app?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "アップデート確認にフォアグラウンドサービスを使用する(より信頼性が高いが、より電力を消費する)",
|
||||
"fgServiceNotice": "この通知は、バックグラウンドでアップデートを確認するために必要です(OSの設定で非表示にできます)。",
|
||||
"excludeSecrets": "シークレットを除く",
|
||||
"GHReqPrefix": "GitHub リクエスト用の 'sky22333/hubproxy' インスタンス",
|
||||
"removeAppQuestion": {
|
||||
"one": "アプリを削除しますか?",
|
||||
"other": "アプリを削除しますか?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "업데이트 확인을 위해 포그라운드 서비스 사용(안정성 향상, 전력 소비량 증가)",
|
||||
"fgServiceNotice": "이 알림은 백그라운드 업데이트 확인에 필요합니다(OS 설정에서 숨길 수 있음).",
|
||||
"excludeSecrets": "비밀 제외",
|
||||
"GHReqPrefix": "GitHub 요청을 위한 'sky22333/hubproxy' 인스턴스",
|
||||
"removeAppQuestion": {
|
||||
"one": "앱을 제거하시겠습니까?",
|
||||
"other": "앱을 제거하시겠습니까?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
|
||||
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
|
||||
"excludeSecrets": "Exclude secrets",
|
||||
"GHReqPrefix": "'sky22333/hubproxy' instance for GitHub requests",
|
||||
"removeAppQuestion": {
|
||||
"one": "ആപ്പ് നീക്കം ചെയ്യണോ?",
|
||||
"other": "ആപ്പുകൾ നീക്കം ചെയ്യണോ?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Gebruik een voorgronddienst voor het controleren van updates (betrouwbaarder, verbruikt meer stroom)",
|
||||
"fgServiceNotice": "Deze melding is nodig voor het controleren van updates op de achtergrond (kan worden verborgen in de OS-instellingen)",
|
||||
"excludeSecrets": "Geheimen uitsluiten",
|
||||
"GHReqPrefix": "'sky22333/hubproxy' instantie voor GitHub verzoeken",
|
||||
"removeAppQuestion": {
|
||||
"one": "App verwijderen?",
|
||||
"other": "Apps verwijderen?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Używanie usługi pierwszoplanowej do sprawdzania aktualizacji (bardziej niezawodne, zużywa więcej energii)",
|
||||
"fgServiceNotice": "To powiadomienie jest wymagane do sprawdzania aktualizacji w tle (można je ukryć w ustawieniach systemu operacyjnego).",
|
||||
"excludeSecrets": "Wyklucz sekrety",
|
||||
"GHReqPrefix": "Instancja \"sky22333/hubproxy\" dla żądań GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "Usunąć aplikację?",
|
||||
"few": "Usunąć aplikacje?",
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Usar um serviço em primeiro plano para verificação de atualizações (mais confiável, consome mais energia)",
|
||||
"fgServiceNotice": "Essa notificação é necessária para a verificação de atualizações em segundo plano (ela pode ser ocultada nas configurações do sistema operacional)",
|
||||
"excludeSecrets": "Excluir segredos",
|
||||
"GHReqPrefix": "Instância \"sky22333/hubproxy\" para solicitações do GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "Remover app?",
|
||||
"other": "Remover apps?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Utilizar um serviço em primeiro plano para verificação de actualizações (mais fiável, consome mais energia)",
|
||||
"fgServiceNotice": "Esta notificação é necessária para a verificação de actualizações em segundo plano (pode ser ocultada nas definições do SO)",
|
||||
"excludeSecrets": "Excluir segredos",
|
||||
"GHReqPrefix": "Instância 'sky22333/hubproxy' para pedidos de GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "Remover aplicação?",
|
||||
"other": "Remover aplicações?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Использовать приоритетную службу для проверки обновлений (надёжнее, энергозатратнее)",
|
||||
"fgServiceNotice": "Это уведомление необходимо для фоновой проверки обновлений (оно может быть скрыто в настройках ОС)",
|
||||
"excludeSecrets": "Исключить секреты",
|
||||
"GHReqPrefix": "Экземпляр 'sky22333/hubproxy' для запросов на GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "Удалить приложение?",
|
||||
"other": "Удалить приложения?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Använd en förgrundstjänst för uppdateringskontroll (mer tillförlitlig, förbrukar mer ström)",
|
||||
"fgServiceNotice": "Detta meddelande krävs för bakgrundsuppdateringskontroll (det kan döljas i OS-inställningarna)",
|
||||
"excludeSecrets": "Utesluta hemligheter",
|
||||
"GHReqPrefix": "Instansen \"sky22333/hubproxy\" för GitHub-förfrågningar",
|
||||
"removeAppQuestion": {
|
||||
"one": "Ta Bort App?",
|
||||
"other": "Ta Bort Appar?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Güncelleme denetimi için bir ön plan hizmeti kullanın (daha güvenilir, daha fazla güç tüketir)",
|
||||
"fgServiceNotice": "Bu bildirim arka planda güncelleme kontrolü için gereklidir (işletim sistemi ayarlarından gizlenebilir)",
|
||||
"excludeSecrets": "Sırları hariç tut",
|
||||
"GHReqPrefix": "GitHub istekleri için 'sky22333/hubproxy' örneği",
|
||||
"removeAppQuestion": {
|
||||
"one": "Uygulamayı Kaldır?",
|
||||
"other": "Uygulamaları Kaldır?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Використовуйте службу переднього плану для перевірки оновлень (надійніша, споживає більше енергії)",
|
||||
"fgServiceNotice": "Це сповіщення необхідне для фонової перевірки оновлень (його можна приховати в налаштуваннях ОС)",
|
||||
"excludeSecrets": "Виключити секрети",
|
||||
"GHReqPrefix": "екземпляр 'sky22333/hubproxy' для запитів на GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "Видалити застосунок?",
|
||||
"other": "Видалити застосунки?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Sử dụng dịch vụ nền trước để kiểm tra cập nhật (đáng tin cậy hơn, tiêu tốn nhiều pin hơn)",
|
||||
"fgServiceNotice": "Thông báo này là bắt buộc để kiểm tra cập nhật nền (có thể ẩn trong cài đặt hệ điều hành).",
|
||||
"excludeSecrets": "Loại trừ thông tin bí mật",
|
||||
"GHReqPrefix": "Thực thể 'sky22333/hubproxy' cho các yêu cầu GitHub",
|
||||
"removeAppQuestion": {
|
||||
"one": "Gỡ ứng dụng?",
|
||||
"other": "Gỡ ứng dụng?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
|
||||
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
|
||||
"excludeSecrets": "Exclude secrets",
|
||||
"GHReqPrefix": "'sky22333/hubproxy' instance for GitHub requests",
|
||||
"removeAppQuestion": {
|
||||
"one": "移除應用程式?",
|
||||
"other": "移除應用程式?"
|
||||
|
@@ -336,6 +336,7 @@
|
||||
"foregroundServiceExplanation": "使用前台服务检查更新(更稳定,但也更耗电)",
|
||||
"fgServiceNotice": "后台检查更新时需要此通知(可在操作系统设置中隐藏)",
|
||||
"excludeSecrets": "排除机密",
|
||||
"GHReqPrefix": "用于 GitHub 请求的 \"sky22333/hubproxy \"实例",
|
||||
"removeAppQuestion": {
|
||||
"one": "是否删除应用?",
|
||||
"other": "是否删除应用?"
|
||||
|
@@ -82,13 +82,13 @@ class APKCombo extends AppSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String> apkUrlPrefetchModifier(
|
||||
String apkUrl,
|
||||
Future<String> assetUrlPrefetchModifier(
|
||||
String assetUrl,
|
||||
String standardUrl,
|
||||
Map<String, dynamic> additionalSettings,
|
||||
) async {
|
||||
var freshURLs = await getApkUrls(standardUrl, additionalSettings);
|
||||
var path2Match = Uri.parse(apkUrl).path;
|
||||
var path2Match = Uri.parse(assetUrl).path;
|
||||
for (var url in freshURLs) {
|
||||
if (Uri.parse(url.value).path == path2Match) {
|
||||
return url.value;
|
||||
|
@@ -45,6 +45,45 @@ class GitHub extends AppSource {
|
||||
const SizedBox(height: 4),
|
||||
],
|
||||
),
|
||||
GeneratedFormTextField(
|
||||
'GHReqPrefix',
|
||||
label: tr('GHReqPrefix'),
|
||||
hint: 'gh-proxy.com',
|
||||
required: false,
|
||||
additionalValidators: [
|
||||
(value) {
|
||||
try {
|
||||
if (Uri.parse(
|
||||
'https://${value}/api.github.com',
|
||||
).scheme.isNotEmpty) {
|
||||
throw true;
|
||||
}
|
||||
} catch (e) {
|
||||
return tr('invalidInput');
|
||||
}
|
||||
return null;
|
||||
},
|
||||
],
|
||||
belowWidgets: [
|
||||
const SizedBox(height: 4),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
launchUrlString(
|
||||
'https://github.com/sky22333/hubproxy',
|
||||
mode: LaunchMode.externalApplication,
|
||||
);
|
||||
},
|
||||
child: Text(
|
||||
tr('about'),
|
||||
style: const TextStyle(
|
||||
decoration: TextDecoration.underline,
|
||||
fontSize: 12,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
],
|
||||
),
|
||||
];
|
||||
|
||||
additionalSourceAppSpecificSettingFormItems = [
|
||||
@@ -270,6 +309,18 @@ class GitHub extends AppSource {
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String> generalReqPrefetchModifier(
|
||||
String reqUrl,
|
||||
Map<String, dynamic> additionalSettings,
|
||||
) async {
|
||||
if ((additionalSettings['GHReqPrefix'] as String? ?? '').isNotEmpty) {
|
||||
var uri = Uri.parse(reqUrl);
|
||||
return 'https://${additionalSettings['GHReqPrefix']}/${uri.toString().substring('https://'.length)}';
|
||||
}
|
||||
return reqUrl;
|
||||
}
|
||||
|
||||
Future<String> getAPIHost(Map<String, dynamic> additionalSettings) async =>
|
||||
'https://api.${hosts[0]}';
|
||||
|
||||
@@ -289,6 +340,12 @@ class GitHub extends AppSource {
|
||||
Map<String, dynamic> additionalSettings, {
|
||||
Function(Response)? onHttpErrorCode,
|
||||
}) async {
|
||||
SettingsProvider settingsProvider = SettingsProvider();
|
||||
await settingsProvider.initializeSettings();
|
||||
var sourceConfigSettingValues = await getSourceConfigValues(
|
||||
additionalSettings,
|
||||
settingsProvider,
|
||||
);
|
||||
bool includePrereleases = additionalSettings['includePrereleases'] == true;
|
||||
bool fallbackToOlderReleases =
|
||||
additionalSettings['fallbackToOlderReleases'] == true;
|
||||
@@ -344,6 +401,7 @@ class GitHub extends AppSource {
|
||||
var url = !e['name'].toString().toLowerCase().endsWith('.apk')
|
||||
? (e['browser_download_url'] ?? e['url'])
|
||||
: (e['url'] ?? e['browser_download_url']);
|
||||
url = undoGHProxyMod(url, sourceConfigSettingValues);
|
||||
e['final_url'] = (e['name'] != null) && (url != null)
|
||||
? MapEntry(e['name'] as String, url as String)
|
||||
: const MapEntry('', '');
|
||||
@@ -522,7 +580,10 @@ class GitHub extends AppSource {
|
||||
allAssetUrls.add(
|
||||
MapEntry(
|
||||
(targetRelease['version'] ?? 'source') + '.tar.gz',
|
||||
targetRelease['tarball_url'],
|
||||
undoGHProxyMod(
|
||||
targetRelease['tarball_url'],
|
||||
sourceConfigSettingValues,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -530,7 +591,10 @@ class GitHub extends AppSource {
|
||||
allAssetUrls.add(
|
||||
MapEntry(
|
||||
(targetRelease['version'] ?? 'source') + '.zip',
|
||||
targetRelease['zipball_url'],
|
||||
undoGHProxyMod(
|
||||
targetRelease['zipball_url'],
|
||||
sourceConfigSettingValues,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -652,12 +716,23 @@ class GitHub extends AppSource {
|
||||
}
|
||||
}
|
||||
|
||||
undoGHProxyMod(
|
||||
String reqUrl,
|
||||
Map<String, String> sourceConfigSettingValues,
|
||||
) => reqUrl.replaceFirst(
|
||||
'https://${sourceConfigSettingValues['GHReqPrefix']}/',
|
||||
'',
|
||||
);
|
||||
|
||||
@override
|
||||
Future<Map<String, List<String>>> search(
|
||||
String query, {
|
||||
Map<String, dynamic> querySettings = const {},
|
||||
}) async {
|
||||
return searchCommon(
|
||||
var sp = SettingsProvider();
|
||||
await sp.initializeSettings();
|
||||
var sourceConfigSettingValues = await getSourceConfigValues({}, sp);
|
||||
var results = await searchCommon(
|
||||
query,
|
||||
'${await getAPIHost({})}/search/repositories?q=${Uri.encodeQueryComponent(query)}&per_page=100',
|
||||
'items',
|
||||
@@ -666,6 +741,15 @@ class GitHub extends AppSource {
|
||||
},
|
||||
querySettings: querySettings,
|
||||
);
|
||||
if ((sourceConfigSettingValues['GHReqPrefix'] ?? '').isNotEmpty) {
|
||||
Map<String, List<String>> results2 = {};
|
||||
results.forEach((k, v) {
|
||||
results2[undoGHProxyMod(k, sourceConfigSettingValues)] = v;
|
||||
});
|
||||
return results2;
|
||||
} else {
|
||||
return results;
|
||||
}
|
||||
}
|
||||
|
||||
void rateLimitErrorCheck(Response res) {
|
||||
|
@@ -129,14 +129,14 @@ class GitLab extends AppSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String> apkUrlPrefetchModifier(
|
||||
String apkUrl,
|
||||
Future<String> assetUrlPrefetchModifier(
|
||||
String assetUrl,
|
||||
String standardUrl,
|
||||
Map<String, dynamic> additionalSettings,
|
||||
) async {
|
||||
String? PAT = await getPATIfAny(hostChanged ? additionalSettings : {});
|
||||
String optionalAuth = (PAT != null) ? 'private_token=$PAT' : '';
|
||||
return '$apkUrl${(Uri.parse(apkUrl).query.isEmpty ? '?' : '&')}$optionalAuth';
|
||||
return '$assetUrl${(Uri.parse(assetUrl).query.isEmpty ? '?' : '&')}$optionalAuth';
|
||||
}
|
||||
|
||||
@override
|
||||
|
@@ -124,12 +124,12 @@ class Uptodown extends AppSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String> apkUrlPrefetchModifier(
|
||||
String apkUrl,
|
||||
Future<String> assetUrlPrefetchModifier(
|
||||
String assetUrl,
|
||||
String standardUrl,
|
||||
Map<String, dynamic> additionalSettings,
|
||||
) async {
|
||||
var res = await sourceRequest(apkUrl, additionalSettings);
|
||||
var res = await sourceRequest(assetUrl, additionalSettings);
|
||||
if (res.statusCode != 200) {
|
||||
throw getObtainiumHttpError(res);
|
||||
}
|
||||
|
@@ -319,13 +319,24 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||
if (e.sourceConfigSettingFormItems.isNotEmpty) {
|
||||
return GeneratedForm(
|
||||
items: e.sourceConfigSettingFormItems.map((e) {
|
||||
e.defaultValue = settingsProvider.getSettingString(e.key);
|
||||
if (e is GeneratedFormSwitch) {
|
||||
e.defaultValue = settingsProvider.getSettingBool(e.key);
|
||||
} else {
|
||||
e.defaultValue = settingsProvider.getSettingString(e.key);
|
||||
}
|
||||
return [e];
|
||||
}).toList(),
|
||||
onValueChanges: (values, valid, isBuilding) {
|
||||
if (valid && !isBuilding) {
|
||||
values.forEach((key, value) {
|
||||
settingsProvider.setSettingString(key, value);
|
||||
var formItem = e.sourceConfigSettingFormItems
|
||||
.where((i) => i.key == key)
|
||||
.firstOrNull;
|
||||
if (formItem is GeneratedFormSwitch) {
|
||||
settingsProvider.setSettingBool(key, value == true);
|
||||
} else {
|
||||
settingsProvider.setSettingString(key, value ?? '');
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
@@ -606,10 +606,20 @@ class AppsProvider with ChangeNotifier {
|
||||
app.url,
|
||||
overrideSource: app.overrideSource,
|
||||
);
|
||||
String downloadUrl = await source.apkUrlPrefetchModifier(
|
||||
app.apkUrls[app.preferredApkIndex].value,
|
||||
var additionalSettingsPlusSourceConfig = {
|
||||
...app.additionalSettings,
|
||||
...(await source.getSourceConfigValues(
|
||||
app.additionalSettings,
|
||||
settingsProvider,
|
||||
)),
|
||||
};
|
||||
String downloadUrl = await source.assetUrlPrefetchModifier(
|
||||
await source.generalReqPrefetchModifier(
|
||||
app.apkUrls[app.preferredApkIndex].value,
|
||||
additionalSettingsPlusSourceConfig,
|
||||
),
|
||||
app.url,
|
||||
app.additionalSettings,
|
||||
additionalSettingsPlusSourceConfig,
|
||||
);
|
||||
var notif = DownloadNotification(app.finalName, 100);
|
||||
notificationsProvider?.cancel(notif.id);
|
||||
@@ -1324,15 +1334,26 @@ class AppsProvider with ChangeNotifier {
|
||||
evenIfSingleChoice: true,
|
||||
);
|
||||
if (tempFileUrl != null) {
|
||||
var s = SourceProvider().getSource(
|
||||
apps[id]!.app.url,
|
||||
overrideSource: apps[id]!.app.overrideSource,
|
||||
);
|
||||
var additionalSettingsPlusSourceConfig = {
|
||||
...apps[id]!.app.additionalSettings,
|
||||
...(await s.getSourceConfigValues(
|
||||
apps[id]!.app.additionalSettings,
|
||||
settingsProvider,
|
||||
)),
|
||||
};
|
||||
fileUrl = MapEntry(
|
||||
tempFileUrl.key,
|
||||
await (SourceProvider().getSource(
|
||||
await s.assetUrlPrefetchModifier(
|
||||
await s.generalReqPrefetchModifier(
|
||||
tempFileUrl.value,
|
||||
additionalSettingsPlusSourceConfig,
|
||||
),
|
||||
apps[id]!.app.url,
|
||||
overrideSource: apps[id]!.app.overrideSource,
|
||||
)).apkUrlPrefetchModifier(
|
||||
tempFileUrl.value,
|
||||
apps[id]!.app.url,
|
||||
apps[id]!.app.additionalSettings,
|
||||
additionalSettingsPlusSourceConfig,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@@ -249,6 +249,15 @@ class SettingsProvider with ChangeNotifier {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
bool? getSettingBool(String settingId) {
|
||||
return prefs?.getBool(settingId) ?? false;
|
||||
}
|
||||
|
||||
void setSettingBool(String settingId, bool value) {
|
||||
prefs?.setBool(settingId, value);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Map<String, int> get categories =>
|
||||
Map<String, int>.from(jsonDecode(prefs?.getString('categories') ?? '{}'));
|
||||
|
||||
|
@@ -686,14 +686,27 @@ abstract class AppSource {
|
||||
bool followRedirects = true,
|
||||
Object? postBody,
|
||||
}) async {
|
||||
var sp = SettingsProvider();
|
||||
await sp.initializeSettings();
|
||||
getSourceConfigValues(additionalSettings, sp);
|
||||
var additionalSettingsPlusSourceConfig = {
|
||||
...additionalSettings,
|
||||
...(await getSourceConfigValues(additionalSettings, sp)),
|
||||
};
|
||||
url = await generalReqPrefetchModifier(
|
||||
url,
|
||||
additionalSettingsPlusSourceConfig,
|
||||
);
|
||||
var method = postBody == null ? 'GET' : 'POST';
|
||||
var requestHeaders = await getRequestHeaders(additionalSettings);
|
||||
var requestHeaders = await getRequestHeaders(
|
||||
additionalSettingsPlusSourceConfig,
|
||||
);
|
||||
var streamedResponseUrlWithResponseAndClient =
|
||||
await sourceRequestStreamResponse(
|
||||
method,
|
||||
url,
|
||||
requestHeaders,
|
||||
additionalSettings,
|
||||
additionalSettingsPlusSourceConfig,
|
||||
followRedirects: followRedirects,
|
||||
postBody: postBody,
|
||||
);
|
||||
@@ -911,12 +924,19 @@ abstract class AppSource {
|
||||
return null;
|
||||
}
|
||||
|
||||
Future<String> apkUrlPrefetchModifier(
|
||||
String apkUrl,
|
||||
Future<String> assetUrlPrefetchModifier(
|
||||
String assetUrl,
|
||||
String standardUrl,
|
||||
Map<String, dynamic> additionalSettings,
|
||||
) async {
|
||||
return apkUrl;
|
||||
return assetUrl;
|
||||
}
|
||||
|
||||
Future<String> generalReqPrefetchModifier(
|
||||
String reqUrl,
|
||||
Map<String, dynamic> additionalSettings,
|
||||
) async {
|
||||
return reqUrl;
|
||||
}
|
||||
|
||||
bool canSearch = false;
|
||||
|
Reference in New Issue
Block a user