Skip to content

Commit c69c937

Browse files
authored
Merge pull request #560 from Clasherzz/client_termination
Closing client when request is removed .
2 parents bb2491e + b726000 commit c69c937

File tree

3 files changed

+17
-16
lines changed

3 files changed

+17
-16
lines changed

lib/providers/collection_providers.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,18 @@ final requestSequenceProvider = StateProvider<List<String>>((ref) {
2525
return ids ?? [];
2626
});
2727

28-
final httpClientManager = HttpClientManager();
29-
3028
final StateNotifierProvider<CollectionStateNotifier, Map<String, RequestModel>?>
3129
collectionStateNotifierProvider =
3230
StateNotifierProvider((ref) => CollectionStateNotifier(
3331
ref,
3432
hiveHandler,
35-
httpClientManager,
3633
));
3734

3835
class CollectionStateNotifier
3936
extends StateNotifier<Map<String, RequestModel>?> {
4037
CollectionStateNotifier(
4138
this.ref,
4239
this.hiveHandler,
43-
this.httpClientManager,
4440
) : super(null) {
4541
var status = loadData();
4642
Future.microtask(() {
@@ -57,7 +53,6 @@ class CollectionStateNotifier
5753
final Ref ref;
5854
final HiveHandler hiveHandler;
5955
final baseHttpResponseModel = const HttpResponseModel();
60-
final HttpClientManager httpClientManager;
6156

6257
bool hasId(String id) => state?.keys.contains(id) ?? false;
6358

@@ -117,6 +112,7 @@ class CollectionStateNotifier
117112
final rId = id ?? ref.read(selectedIdStateProvider);
118113
var itemIds = ref.read(requestSequenceProvider);
119114
int idx = itemIds.indexOf(rId!);
115+
cancelHttpRequest(rId);
120116
itemIds.remove(rId);
121117
ref.read(requestSequenceProvider.notifier).state = [...itemIds];
122118

@@ -293,7 +289,7 @@ class CollectionStateNotifier
293289
state = map;
294290

295291
bool noSSL = ref.read(settingsProvider).isSSLDisabled;
296-
(HttpResponse?, Duration?, String?)? responseRec = await request(
292+
var responseRec = await sendHttpRequest(
297293
requestId,
298294
apiType,
299295
substitutedHttpRequestModel,
@@ -349,7 +345,7 @@ class CollectionStateNotifier
349345

350346
void cancelRequest() {
351347
final id = ref.read(selectedIdStateProvider);
352-
httpClientManager.cancelRequest(id);
348+
cancelHttpRequest(id);
353349
unsave();
354350
}
355351

packages/apidash_core/lib/services/http_service.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,16 @@ import 'http_client_manager.dart';
1010

1111
typedef HttpResponse = http.Response;
1212

13-
Future<(HttpResponse?, Duration?, String?)> request(
13+
final httpClientManager = HttpClientManager();
14+
15+
Future<(HttpResponse?, Duration?, String?)> sendHttpRequest(
1416
String requestId,
1517
APIType apiType,
1618
HttpRequestModel requestModel, {
1719
SupportedUriSchemes defaultUriScheme = kDefaultUriScheme,
1820
bool noSSL = false,
1921
}) async {
20-
final clientManager = HttpClientManager();
21-
final client = clientManager.createClient(requestId, noSSL: noSSL);
22+
final client = httpClientManager.createClient(requestId, noSSL: noSSL);
2223

2324
(Uri?, String?) uriRec = getValidRequestUri(
2425
requestModel.url,
@@ -123,14 +124,18 @@ Future<(HttpResponse?, Duration?, String?)> request(
123124
stopwatch.stop();
124125
return (response, stopwatch.elapsed, null);
125126
} catch (e) {
126-
if (clientManager.wasRequestCancelled(requestId)) {
127+
if (httpClientManager.wasRequestCancelled(requestId)) {
127128
return (null, null, kMsgRequestCancelled);
128129
}
129130
return (null, null, e.toString());
130131
} finally {
131-
clientManager.closeClient(requestId);
132+
httpClientManager.closeClient(requestId);
132133
}
133134
} else {
134135
return (null, null, uriRec.$2);
135136
}
136137
}
138+
139+
void cancelHttpRequest(String? requestId) {
140+
httpClientManager.cancelRequest(requestId);
141+
}

test/models/response_model_test.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ void main() {
1414
});
1515

1616
test('Testing fromResponse', () async {
17-
(HttpResponse?, Duration?, String?)? responseRec = await request(
17+
var responseRec = await sendHttpRequest(
1818
requestModelGet1.id,
1919
requestModelGet1.apiType,
2020
requestModelGet1.httpRequestModel!,
@@ -32,7 +32,7 @@ void main() {
3232
});
3333

3434
test('Testing fromResponse for contentType not Json', () async {
35-
(HttpResponse?, Duration?, String?)? responseRec = await request(
35+
var responseRec = await sendHttpRequest(
3636
requestModelGet13.id,
3737
requestModelGet1.apiType,
3838
requestModelGet13.httpRequestModel!,
@@ -48,7 +48,7 @@ void main() {
4848
});
4949

5050
test('Testing fromResponse for Bad SSL with certificate check', () async {
51-
(HttpResponse?, Duration?, String?)? responseRec = await request(
51+
var responseRec = await sendHttpRequest(
5252
requestModelGetBadSSL.id,
5353
requestModelGet1.apiType,
5454
requestModelGetBadSSL.httpRequestModel!,
@@ -60,7 +60,7 @@ void main() {
6060
});
6161

6262
test('Testing fromResponse for Bad SSL with no certificate check', () async {
63-
(HttpResponse?, Duration?, String?)? responseRec = await request(
63+
var responseRec = await sendHttpRequest(
6464
requestModelGetBadSSL.id,
6565
requestModelGet1.apiType,
6666
requestModelGetBadSSL.httpRequestModel!,

0 commit comments

Comments
 (0)