Index: lib/src/util/io.dart |
diff --git a/lib/src/util/io.dart b/lib/src/util/io.dart |
index 8a4a9036c766984ad7e2b1293decc6960ba3f7bd..1cf51104d023d95657ce5f8037087f3cb2dde4b3 100644 |
--- a/lib/src/util/io.dart |
+++ b/lib/src/util/io.dart |
@@ -53,3 +53,20 @@ Future withTempDir(Future fn(String path)) { |
.whenComplete(() => tempDir.deleteSync(recursive: true)); |
}); |
} |
+ |
+/// Creates a URL string for [address]:[port]. |
+/// |
+/// Handles properly formatting IPv6 addresses. |
+Uri baseUrlForAddress(InternetAddress address, int port) { |
+ if (address.isLoopback) { |
+ return new Uri(scheme: "http", host: "localhost", port: port); |
+ } |
+ |
+ // IPv6 addresses in URLs need to be enclosed in square brackets to avoid |
+ // URL ambiguity with the ":" in the address. |
+ if (address.type == InternetAddressType.IP_V6) { |
+ return new Uri(scheme: "http", host: "[${address.address}]", port: port); |
+ } |
+ |
+ return new Uri(scheme: "http", host: address.address, port: port); |
+} |