41 lines
1.0 KiB
Dart
41 lines
1.0 KiB
Dart
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:extera_next/utils/platform_infos.dart';
|
|
import 'package:http/http.dart' as http;
|
|
import 'package:http/io_client.dart';
|
|
|
|
import 'package:extera_next/config/isrg_x1.dart';
|
|
|
|
class CustomHttpClient {
|
|
static HttpClient customHttpClient(String? cert) {
|
|
final context = SecurityContext.defaultContext;
|
|
|
|
if (PlatformInfos.isAndroid) {
|
|
try {
|
|
if (cert != null) {
|
|
final bytes = utf8.encode(cert);
|
|
context.setTrustedCertificatesBytes(bytes);
|
|
}
|
|
} on TlsException catch (e) {
|
|
if (e.osError != null &&
|
|
e.osError!.message.contains('CERT_ALREADY_IN_HASH_TABLE')) {
|
|
} else {
|
|
rethrow;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Use Nekoray mixed proxy
|
|
// Made it for myself, remove later
|
|
final httpClient = HttpClient(context: context);
|
|
httpClient.findProxy = (uri) {
|
|
return 'PROXY localhost:2080;';
|
|
};
|
|
|
|
return httpClient;
|
|
}
|
|
|
|
static http.Client createHTTPClient() => IOClient(customHttpClient(ISRG_X1));
|
|
}
|