2022-11-10 18:33:07 +01:00
|
|
|
import 'package:dio/dio.dart';
|
|
|
|
import 'package:dio_http_cache_lts/dio_http_cache_lts.dart';
|
|
|
|
import 'package:injectable/injectable.dart' hide Environment;
|
|
|
|
import 'package:revanced_manager/utils/environment.dart';
|
|
|
|
import 'package:sentry_dio/sentry_dio.dart';
|
|
|
|
import 'package:sentry_flutter/sentry_flutter.dart';
|
|
|
|
|
|
|
|
@lazySingleton
|
|
|
|
class CrowdinAPI {
|
|
|
|
late Dio _dio = Dio();
|
|
|
|
final DioCacheManager _dioCacheManager = DioCacheManager(CacheConfig());
|
|
|
|
final apiKey = Environment.crowdinKEY;
|
|
|
|
|
|
|
|
Future<void> initialize() async {
|
|
|
|
try {
|
2023-01-30 13:35:06 +01:00
|
|
|
_dio = Dio(
|
|
|
|
BaseOptions(
|
|
|
|
baseUrl: 'https://api.crowdin.com/api/v2',
|
|
|
|
),
|
|
|
|
);
|
2022-11-10 18:33:07 +01:00
|
|
|
|
|
|
|
_dio.interceptors.add(_dioCacheManager.interceptor);
|
|
|
|
_dio.addSentry(
|
|
|
|
captureFailedRequests: true,
|
|
|
|
);
|
|
|
|
} on Exception catch (e, s) {
|
|
|
|
await Sentry.captureException(e, stackTrace: s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> clearAllCache() async {
|
|
|
|
try {
|
|
|
|
await _dioCacheManager.clearAll();
|
|
|
|
} on Exception catch (e, s) {
|
|
|
|
await Sentry.captureException(e, stackTrace: s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<List> getLanguages() async {
|
|
|
|
try {
|
2023-01-30 13:35:06 +01:00
|
|
|
final response = await _dio.get(
|
2022-11-10 18:33:07 +01:00
|
|
|
'/projects',
|
|
|
|
options: buildCacheOptions(
|
|
|
|
const Duration(hours: 6),
|
|
|
|
maxStale: const Duration(days: 1),
|
|
|
|
options: Options(
|
|
|
|
headers: {
|
|
|
|
'Authorization': 'Bearer $apiKey',
|
|
|
|
},
|
|
|
|
contentType: 'application/json',
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
2023-01-30 13:35:06 +01:00
|
|
|
final List targetLanguages =
|
2022-11-10 18:33:07 +01:00
|
|
|
await response.data['data'][0]['data']['targetLanguages'];
|
|
|
|
|
|
|
|
return targetLanguages;
|
|
|
|
} on Exception catch (e, s) {
|
|
|
|
await Sentry.captureException(e, stackTrace: s);
|
|
|
|
return [];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|