mirror of
https://github.com/ReVanced/revanced-manager.git
synced 2024-11-10 09:07:47 +01:00
a0b673c138
Signed-off-by: validcube <pun.butrach@gmail.com>
75 lines
1.8 KiB
Dart
75 lines
1.8 KiB
Dart
import 'package:dio/dio.dart';
|
|
import 'package:dio_cache_interceptor/dio_cache_interceptor.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter_cache_manager/file.dart';
|
|
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
|
import 'package:injectable/injectable.dart';
|
|
import 'package:revanced_manager/app/app.locator.dart';
|
|
import 'package:revanced_manager/services/manager_api.dart';
|
|
|
|
@lazySingleton
|
|
class DownloadManager {
|
|
final ManagerAPI _managerAPI = locator<ManagerAPI>();
|
|
late final String _userAgent;
|
|
|
|
final _cacheOptions = CacheOptions(
|
|
store: MemCacheStore(),
|
|
maxStale: const Duration(days: 1),
|
|
priority: CachePriority.high,
|
|
);
|
|
|
|
Future<void> initialize() async {
|
|
_userAgent =
|
|
'ReVanced-Manager/${await _managerAPI.getCurrentManagerVersion()}';
|
|
}
|
|
|
|
Dio initDio(String url) {
|
|
var dio = Dio();
|
|
try {
|
|
dio = Dio(
|
|
BaseOptions(
|
|
baseUrl: url,
|
|
headers: {
|
|
'User-Agent': _userAgent,
|
|
},
|
|
),
|
|
);
|
|
} on Exception catch (e) {
|
|
if (kDebugMode) {
|
|
print(e);
|
|
}
|
|
}
|
|
|
|
dio.interceptors.add(DioCacheInterceptor(options: _cacheOptions));
|
|
return dio;
|
|
}
|
|
|
|
Future<void> clearAllCache() async {
|
|
try {
|
|
await _cacheOptions.store!.clean();
|
|
} on Exception catch (e) {
|
|
if (kDebugMode) {
|
|
print(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
Future<File> getSingleFile(String url) async {
|
|
return DefaultCacheManager().getSingleFile(
|
|
url,
|
|
headers: {
|
|
'User-Agent': _userAgent,
|
|
},
|
|
);
|
|
}
|
|
|
|
Stream<FileResponse> getFileStream(String url) {
|
|
return DefaultCacheManager().getFileStream(
|
|
url,
|
|
withProgress: true,
|
|
headers: {
|
|
'User-Agent': _userAgent,
|
|
},
|
|
);
|
|
}
|
|
}
|