From 40d572232c297929257fad351efd05d7b594ddf4 Mon Sep 17 00:00:00 2001 From: Brian Quinlan Date: Tue, 9 Jan 2024 13:56:21 -0800 Subject: [PATCH] Make tests pass --- pkgs/http/lib/http.dart | 2 +- pkgs/http/lib/src/base_request.dart | 26 +++++++++++++++++------- pkgs/http/lib/src/browser_client.dart | 13 +----------- pkgs/http/lib/src/streamed_response.dart | 16 +++++++++++++++ pkgs/http/test/io/request_test.dart | 6 +++--- 5 files changed, 40 insertions(+), 23 deletions(-) diff --git a/pkgs/http/lib/http.dart b/pkgs/http/lib/http.dart index 62004240c7..404f3d2e2f 100644 --- a/pkgs/http/lib/http.dart +++ b/pkgs/http/lib/http.dart @@ -25,7 +25,7 @@ export 'src/multipart_request.dart'; export 'src/request.dart'; export 'src/response.dart'; export 'src/streamed_request.dart'; -export 'src/streamed_response.dart'; +export 'src/streamed_response.dart' hide StreamedResponseV2; /// Sends an HTTP HEAD request with the given headers to the given URL. /// diff --git a/pkgs/http/lib/src/base_request.dart b/pkgs/http/lib/src/base_request.dart index 70a78695aa..ece1541783 100644 --- a/pkgs/http/lib/src/base_request.dart +++ b/pkgs/http/lib/src/base_request.dart @@ -132,13 +132,25 @@ abstract class BaseRequest { try { var response = await client.send(this); var stream = onDone(response.stream, client.close); - return StreamedResponse(ByteStream(stream), response.statusCode, - contentLength: response.contentLength, - request: response.request, - headers: response.headers, - isRedirect: response.isRedirect, - persistentConnection: response.persistentConnection, - reasonPhrase: response.reasonPhrase); + + if (response is BaseResponseV2) { + return StreamedResponseV2(ByteStream(stream), response.statusCode, + contentLength: response.contentLength, + request: response.request, + headers: response.headers, + isRedirect: response.isRedirect, + url: (response as BaseResponseV2).url, + persistentConnection: response.persistentConnection, + reasonPhrase: response.reasonPhrase); + } else { + return StreamedResponse(ByteStream(stream), response.statusCode, + contentLength: response.contentLength, + request: response.request, + headers: response.headers, + isRedirect: response.isRedirect, + persistentConnection: response.persistentConnection, + reasonPhrase: response.reasonPhrase); + } } catch (_) { client.close(); rethrow; diff --git a/pkgs/http/lib/src/browser_client.dart b/pkgs/http/lib/src/browser_client.dart index 0b0a5d365f..48849d7b9d 100644 --- a/pkgs/http/lib/src/browser_client.dart +++ b/pkgs/http/lib/src/browser_client.dart @@ -27,17 +27,6 @@ BaseClient createClient() { return BrowserClient(); } -class _StreamedResponseV2 extends StreamedResponse with BaseResponseV2 { - @override - final Uri? url; - _StreamedResponseV2(super.stream, super.statusCode, - {super.contentLength, - super.request, - super.headers, - this.url, - super.reasonPhrase}); -} - /// A `package:web`-based HTTP client that runs in the browser and is backed by /// [XMLHttpRequest]. /// @@ -93,7 +82,7 @@ class BrowserClient extends BaseClient { var body = (xhr.response as JSArrayBuffer).toDart.asUint8List(); var responseUrl = xhr.responseURL; var url = responseUrl.isNotEmpty ? Uri.parse(responseUrl) : null; - completer.complete(_StreamedResponseV2( + completer.complete(StreamedResponseV2( ByteStream.fromBytes(body), xhr.status, contentLength: body.length, request: request, diff --git a/pkgs/http/lib/src/streamed_response.dart b/pkgs/http/lib/src/streamed_response.dart index 8cc0c76f75..2d6f61ff35 100644 --- a/pkgs/http/lib/src/streamed_response.dart +++ b/pkgs/http/lib/src/streamed_response.dart @@ -26,3 +26,19 @@ class StreamedResponse extends BaseResponse { super.reasonPhrase}) : stream = toByteStream(stream); } + +/// This class is private to `package:http` and will be removed when +/// `package:http` v2 is released. +class StreamedResponseV2 extends StreamedResponse with BaseResponseV2 { + @override + final Uri? url; + + StreamedResponseV2(super.stream, super.statusCode, + {super.contentLength, + super.request, + super.headers, + super.isRedirect, + this.url, + super.persistentConnection, + super.reasonPhrase}); +} diff --git a/pkgs/http/test/io/request_test.dart b/pkgs/http/test/io/request_test.dart index ee95fb45be..9d5c0b6d04 100644 --- a/pkgs/http/test/io/request_test.dart +++ b/pkgs/http/test/io/request_test.dart @@ -47,17 +47,17 @@ void main() { final response = await request.send(); expect(response.statusCode, equals(302)); - expect((response as BaseResponseV2).url, serverUrl.resolve('/redirect')); + expect( + (response as http.BaseResponseV2).url, serverUrl.resolve('/redirect')); }); test('with redirects', () async { final request = http.Request('GET', serverUrl.resolve('/redirect')); final response = await request.send(); - expect(response.statusCode, equals(200)); final bytesString = await response.stream.bytesToString(); expect(bytesString, parse(containsPair('path', '/'))); - expect((response as BaseResponseV2).url, serverUrl.resolve('/')); + expect((response as http.BaseResponseV2).url, serverUrl.resolve('/')); }); test('exceeding max redirects', () async {