selfprivacy.org.app/lib/logic/api_maps/api_map.dart

70 lines
1.7 KiB
Dart
Raw Normal View History

2021-01-21 23:01:42 +02:00
import 'dart:developer';
import 'dart:io';
import 'package:dio/adapter.dart';
2021-01-06 19:35:57 +02:00
import 'package:dio/dio.dart';
2021-01-14 23:48:05 +02:00
import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/get_it/console.dart';
import 'package:selfprivacy/logic/models/message.dart';
2021-01-06 19:35:57 +02:00
abstract class ApiMap {
2021-01-21 23:01:42 +02:00
ApiMap() {
var client = Dio()..interceptors.add(ConsoleInterceptor());
(client.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
(HttpClient client) {
client.badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
return client;
};
loggedClient = client;
}
2021-03-15 17:39:44 +02:00
String? rootAddress;
2021-01-06 19:35:57 +02:00
2021-03-15 17:39:44 +02:00
late Dio loggedClient;
2021-01-06 19:35:57 +02:00
void close() {
2021-01-14 23:48:05 +02:00
loggedClient.close();
}
}
class ConsoleInterceptor extends InterceptorsWrapper {
void addMessage(Message message) {
getIt.get<ConsoleModel>().addMessage(message);
}
@override
Future onRequest(RequestOptions options) async {
addMessage(
Message(
text:
'request-uri: ${options.uri}\nheaders: ${options.headers}\ndata: ${options.data}',
),
);
return super.onRequest(options);
}
@override
Future onResponse(Response response) async {
addMessage(
Message(
text:
2021-01-18 12:21:55 +02:00
'response-uri: ${response.request.uri}\ncode: ${response.statusCode}\ndata: ${response.toString()}\n',
2021-01-14 23:48:05 +02:00
),
);
return super.onResponse(response);
}
@override
Future onError(DioError err) async {
2021-01-18 12:21:55 +02:00
var response = err.response;
2021-01-21 23:01:42 +02:00
log(err.toString());
2021-01-18 12:21:55 +02:00
addMessage(
Message.warn(
text:
2021-03-15 17:39:44 +02:00
'response-uri: ${response?.request.uri}\ncode: ${response?.statusCode}\ndata: ${response?.toString()}\n',
2021-01-18 12:21:55 +02:00
),
);
2021-01-14 23:48:05 +02:00
return super.onError(err);
2021-01-06 19:35:57 +02:00
}
}