2020-11-19 18:22:30 +00:00
|
|
|
import 'dart:io';
|
2022-10-14 09:24:15 +00:00
|
|
|
|
2020-11-19 18:22:30 +00:00
|
|
|
import 'package:dio/dio.dart';
|
2021-10-03 21:39:05 +00:00
|
|
|
import 'package:fk_user_agent/fk_user_agent.dart';
|
2021-05-16 08:56:20 +00:00
|
|
|
import 'package:package_info_plus/package_info_plus.dart';
|
2022-10-14 09:24:15 +00:00
|
|
|
import 'package:photos/core/constants.dart';
|
2023-02-03 07:39:04 +00:00
|
|
|
import 'package:photos/core/network/ente_interceptor.dart';
|
2022-10-14 09:24:15 +00:00
|
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
2020-11-19 18:22:30 +00:00
|
|
|
|
2021-09-28 07:11:44 +00:00
|
|
|
int kConnectTimeout = 15000;
|
2021-10-03 21:39:05 +00:00
|
|
|
|
2023-02-03 07:39:04 +00:00
|
|
|
class NetworkClient {
|
2022-10-14 09:24:15 +00:00
|
|
|
// apiEndpoint points to the Ente server's API endpoint
|
|
|
|
static const apiEndpoint = String.fromEnvironment(
|
|
|
|
"endpoint",
|
|
|
|
defaultValue: kDefaultProductionEndpoint,
|
|
|
|
);
|
|
|
|
|
2022-09-21 12:07:09 +00:00
|
|
|
late Dio _dio;
|
2022-10-14 09:24:15 +00:00
|
|
|
late Dio _enteDio;
|
2021-10-08 11:21:01 +00:00
|
|
|
|
2021-04-04 17:19:46 +00:00
|
|
|
Future<void> init() async {
|
2021-10-03 21:39:05 +00:00
|
|
|
await FkUserAgent.init();
|
2021-05-22 17:57:20 +00:00
|
|
|
final packageInfo = await PackageInfo.fromPlatform();
|
2022-10-14 09:24:15 +00:00
|
|
|
final preferences = await SharedPreferences.getInstance();
|
2022-06-11 08:23:52 +00:00
|
|
|
_dio = Dio(
|
|
|
|
BaseOptions(
|
|
|
|
connectTimeout: kConnectTimeout,
|
|
|
|
headers: {
|
|
|
|
HttpHeaders.userAgentHeader: FkUserAgent.userAgent,
|
|
|
|
'X-Client-Version': packageInfo.version,
|
|
|
|
'X-Client-Package': packageInfo.packageName,
|
|
|
|
},
|
|
|
|
),
|
|
|
|
);
|
2022-10-14 09:24:15 +00:00
|
|
|
_enteDio = Dio(
|
|
|
|
BaseOptions(
|
|
|
|
baseUrl: apiEndpoint,
|
|
|
|
connectTimeout: kConnectTimeout,
|
|
|
|
headers: {
|
|
|
|
HttpHeaders.userAgentHeader: FkUserAgent.userAgent,
|
|
|
|
'X-Client-Version': packageInfo.version,
|
|
|
|
'X-Client-Package': packageInfo.packageName,
|
|
|
|
},
|
|
|
|
),
|
|
|
|
);
|
2023-02-03 07:39:04 +00:00
|
|
|
_enteDio.interceptors.add(EnteRequestInterceptor(preferences, apiEndpoint));
|
2020-11-19 18:22:30 +00:00
|
|
|
}
|
2021-04-04 17:19:46 +00:00
|
|
|
|
2023-02-03 07:39:04 +00:00
|
|
|
NetworkClient._privateConstructor();
|
2021-07-12 11:15:58 +00:00
|
|
|
|
2023-02-03 07:39:04 +00:00
|
|
|
static NetworkClient instance = NetworkClient._privateConstructor();
|
2020-11-19 18:22:30 +00:00
|
|
|
|
|
|
|
Dio getDio() => _dio;
|
2022-10-14 09:24:15 +00:00
|
|
|
|
|
|
|
Dio get enteDio => _enteDio;
|
2020-11-19 18:22:30 +00:00
|
|
|
}
|