mirror of
https://github.com/revanced/revanced-manager
synced 2024-05-14 13:56:57 +02:00
e960fcc303
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
76 lines
1.7 KiB
Dart
76 lines
1.7 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,
|
|
},
|
|
);
|
|
}
|
|
}
|
|
|