Skip to content

Commit 8fdf2e0

Browse files
committed
🔀 resolve merge conflicts
1 parent 02cb4c3 commit 8fdf2e0

File tree

3 files changed

+44
-32
lines changed

3 files changed

+44
-32
lines changed

lib/extensions/uri.dart

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@ import 'package:http_interceptor/utils/utils.dart';
44
/// Extends `Uri` to allow adding parameters to already created instances.
55
extension AddParameters on Uri {
66
/// Returns a new [Uri] instance based on `this` and adds [parameters].
7-
Uri addParameters([Map<String, dynamic>? parameters]) {
8-
if (parameters?.isNotEmpty ?? false) {
9-
String finalUrl = buildUrlString(
10-
"$origin$path",
11-
{
12-
...queryParametersAll,
13-
...?parameters,
14-
},
15-
);
16-
if (fragment.isNotEmpty) {
17-
finalUrl += '#$fragment';
18-
}
19-
return finalUrl.toUri();
20-
}
21-
return this;
22-
}
7+
Uri addParameters([Map<String, dynamic>? parameters]) =>
8+
parameters?.isNotEmpty ?? false
9+
? (StringBuffer()
10+
..writeAll([
11+
buildUrlString(
12+
"$origin$path",
13+
{
14+
...queryParametersAll,
15+
...?parameters,
16+
},
17+
),
18+
if (fragment.isNotEmpty) '#$fragment',
19+
]))
20+
.toString()
21+
.toUri()
22+
: this;
2323
}

lib/http/intercepted_client.dart

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -262,43 +262,49 @@ class InterceptedClient extends BaseClient {
262262
void _checkResponseSuccess(Uri url, Response response) {
263263
if (response.statusCode < 400) return;
264264
final StringBuffer message = StringBuffer()
265-
..write("Request to $url failed with status ${response.statusCode}");
266-
if (response.reasonPhrase != null) {
267-
message.write(": ${response.reasonPhrase}");
268-
}
265+
..writeAll([
266+
"Request to $url failed with status ${response.statusCode}",
267+
if (response.reasonPhrase != null) ": ${response.reasonPhrase}",
268+
]);
269+
269270
throw ClientException("$message.", url);
270271
}
271272

272273
/// Attempts to perform the request and intercept the data
273274
/// of the response
274-
Future<BaseResponse> _attemptRequest(BaseRequest request,
275-
{bool isStream = false}) async {
275+
Future<BaseResponse> _attemptRequest(
276+
BaseRequest request, {
277+
bool isStream = false,
278+
}) async {
276279
_retryCount = 0; // Reset retry count for each new request
277280
return _attemptRequestWithRetries(request, isStream: isStream);
278281
}
279282

280283
/// Internal method that handles the actual request with retry logic
281-
Future<BaseResponse> _attemptRequestWithRetries(BaseRequest request,
282-
{bool isStream = false}) async {
284+
Future<BaseResponse> _attemptRequestWithRetries(
285+
BaseRequest request, {
286+
bool isStream = false,
287+
}) async {
283288
BaseResponse response;
289+
284290
try {
285291
// Intercept request
286292
final BaseRequest interceptedRequest = await _interceptRequest(request);
287293

288-
StreamedResponse stream;
294+
late final StreamedResponse stream;
295+
289296
if (requestTimeout == null) {
290297
stream = await _inner.send(interceptedRequest);
291298
} else {
292299
// Use a completer to properly handle timeout and cancellation
293-
final completer = Completer<StreamedResponse>();
300+
final Completer<StreamedResponse> completer = Completer();
294301
final Future<StreamedResponse> requestFuture =
295302
_inner.send(interceptedRequest);
296303

297304
// Set up timeout with proper cleanup
298-
Timer? timeoutTimer;
299305
bool isCompleted = false;
300306

301-
timeoutTimer = Timer(requestTimeout!, () {
307+
final Timer timeoutTimer = Timer(requestTimeout!, () {
302308
if (!isCompleted) {
303309
isCompleted = true;
304310
if (onRequestTimeout != null) {
@@ -337,15 +343,15 @@ class InterceptedClient extends BaseClient {
337343

338344
// Handle the actual request completion
339345
requestFuture.then((streamResponse) {
340-
timeoutTimer?.cancel();
346+
timeoutTimer.cancel();
341347
if (!isCompleted) {
342348
isCompleted = true;
343349
if (!completer.isCompleted) {
344350
completer.complete(streamResponse);
345351
}
346352
}
347353
}).catchError((error) {
348-
timeoutTimer?.cancel();
354+
timeoutTimer.cancel();
349355
if (!isCompleted) {
350356
isCompleted = true;
351357
if (!completer.isCompleted) {
@@ -429,7 +435,8 @@ class InterceptedClient extends BaseClient {
429435
StackTrace? stackTrace,
430436
}) async {
431437
for (InterceptorContract interceptor in interceptors) {
432-
if (await interceptor.shouldInterceptError()) {
438+
if (await interceptor.shouldInterceptError(
439+
request: request, response: response)) {
433440
await interceptor.interceptError(
434441
request: request,
435442
response: response,

lib/models/interceptor_contract.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,15 @@ abstract class InterceptorContract {
3838
FutureOr<bool> shouldInterceptResponse({required BaseResponse response}) =>
3939
true;
4040

41+
/// Intercepts the response.
4142
FutureOr<BaseResponse> interceptResponse({required BaseResponse response});
4243

4344
/// Checks if the error should be intercepted.
44-
FutureOr<bool> shouldInterceptError() => true;
45+
FutureOr<bool> shouldInterceptError({
46+
BaseRequest? request,
47+
BaseResponse? response,
48+
}) =>
49+
true;
4550

4651
/// Intercepts the error response.
4752
FutureOr<void> interceptError({

0 commit comments

Comments
 (0)