@@ -3,9 +3,14 @@ import 'dart:convert';
3
3
4
4
import 'package:adhara/config.dart' ;
5
5
import 'package:adhara/datainterface/data/data_provider.dart' ;
6
- import 'package:http/http.dart' as http;
6
+ import 'package:http/io_client.dart' ;
7
+ import 'dart:io' ;
8
+ import 'package:http/http.dart' as default_http;
9
+
7
10
8
11
class NetworkProvider extends DataProvider {
12
+
13
+ IOClient _http;
9
14
NetworkProvider (Config config)
10
15
: assert (config.baseURL.endsWith ("/" )),
11
16
super (config);
@@ -16,8 +21,27 @@ class NetworkProvider extends DataProvider {
16
21
return data;
17
22
}
18
23
24
+ bool badCertCallback (X509Certificate cert, String host, int port) {
25
+ print ("---------------------CERTIFICATE_VERIFY_FAILED---------------------\n "
26
+ "SSL Certificate seems to invalid/self signed.\n "
27
+ " to suppress these logs, override\n "
28
+ "\t `bool badCertCallback(X509Certificate cert, String host, int port)`\n "
29
+ "in your NetworkProvider class and `return true`\n "
30
+ "-------------------------------------------------------------------" );
31
+ return true ;
32
+ }
33
+
34
+ IOClient get http {
35
+ if (_http== null ) {
36
+ HttpClient client = new HttpClient ();
37
+ client.badCertificateCallback = badCertCallback;
38
+ _http = IOClient (client);
39
+ }
40
+ return _http;
41
+ }
42
+
19
43
dynamic extractResponse (dynamic response) {
20
- response = response as http .Response ;
44
+ response = response as default_http .Response ;
21
45
if (response.statusCode >= 400 ) {
22
46
throw response;
23
47
}
@@ -47,13 +71,13 @@ class NetworkProvider extends DataProvider {
47
71
48
72
postResponseIntercept (
49
73
String method, String url, dynamic data, dynamic response) async {
50
- response = response as http .Response ;
74
+ response = response as default_http .Response ;
51
75
return ;
52
76
}
53
77
54
78
_postResponseIntercept (
55
79
String method, String url, dynamic data, dynamic response) async {
56
- response = response as http .Response ;
80
+ response = response as default_http .Response ;
57
81
print (
58
82
"http: $method $url with data: ${data ?? data .toString ()} response: ${response .statusCode } \n ${response .body }" );
59
83
postResponseIntercept (method, url, data, response);
@@ -62,16 +86,15 @@ class NetworkProvider extends DataProvider {
62
86
Future <dynamic > get (String url, {Map headers}) async {
63
87
url = this .formatURL (url);
64
88
_preFlightIntercept ("GET" , url, null );
65
- http.Response r =
66
- await http.get (url, headers: headers ?? this .defaultHeaders);
89
+ default_http.Response r = await http.get (url, headers: headers ?? this .defaultHeaders);
67
90
await _postResponseIntercept ("GET" , url, null , r);
68
91
return this .extractResponse (r);
69
92
}
70
93
71
94
Future <dynamic > post (String url, Map data, {Map headers}) async {
72
95
url = this .formatURL (url);
73
96
_preFlightIntercept ("POST" , url, data);
74
- http .Response r = await http.post (url,
97
+ default_http .Response r = await http.post (url,
75
98
body: json.encode (data), headers: headers ?? this .defaultHeaders);
76
99
await _postResponseIntercept ("POST" , url, data, r);
77
100
return this .extractResponse (r);
@@ -80,7 +103,7 @@ class NetworkProvider extends DataProvider {
80
103
Future <dynamic > put (String url, Map data, {Map headers}) async {
81
104
url = this .formatURL (url);
82
105
_preFlightIntercept ("PUT" , url, data);
83
- http .Response r = await http.put (url,
106
+ default_http .Response r = await http.put (url,
84
107
body: json.encode (data), headers: headers ?? this .defaultHeaders);
85
108
await _postResponseIntercept ("PUT" , url, data, r);
86
109
return this .extractResponse (r);
@@ -89,9 +112,9 @@ class NetworkProvider extends DataProvider {
89
112
Future <dynamic > delete (String url, {Map headers}) async {
90
113
url = this .formatURL (url);
91
114
_preFlightIntercept ("DELETE" , url, null );
92
- http.Response r =
93
- await http.delete (url, headers: headers ?? this .defaultHeaders);
115
+ default_http.Response r = await http.delete (url, headers: headers ?? this .defaultHeaders);
94
116
await _postResponseIntercept ("DELETE" , url, null , r);
95
117
return this .extractResponse (r);
96
118
}
119
+
97
120
}
0 commit comments