tree b01603d4e5469ead910591b4479d79bd2f69a14d
parent 21e02c10c042cbd396d39b825dc7538ea6cccab8
author Jacob MacDonald <jakemac@google.com> 1536846579 -0700
committer GitHub <noreply@github.com> 1536846579 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJbmmrzCRBK7hj4Ov3rIwAAdHIIAFT9IejJuvXAOJwlxdKVn/p+
 lkcc1Xeo2SwdZmsWl10d/NzlFgK7mMalWOULd7ieT6p72XX7KmgDmrONTzYepBD5
 BaRogGiNGLa06aoJplm15iZxInAYxMCZvbirZ+3jB70KTRPwEsIYVHW0KY8d5JFL
 gueSxJU4cxMNKbFf20XAhdFEX6/PzDX7NrjjuaSSFvksCxhXol0M5QUaBMCxpV6j
 2nhn9+vFk+gb9ppcAAIeuJ4qb4WWUF6Qaczvg7s/mnJIUcqd7cO5lZpC+7GFOg/W
 KI64fYQU82WsWtf2rdGXJmUL81yOWr65QOX1X/iZ7GzfcdGu9T3DP3YvxRFD55I=
 =k8+O
 -----END PGP SIGNATURE-----
 

Make `package:http/http.dart` support all platforms (#198)

Fixes https://github.com/dart-lang/http/issues/22

Adds config specific imports to make `package:http/http.dart` support all platforms, and allow the `Client` factory constructor to return a valid `Client` for the web platform.

This should eliminate almost all need for the platform specific imports for consumers, although it does also add the `io_client.dart` public import.

Passes presubmit internally, with edits in only 3 files (they use the IoClient constructor directly, and pass in an HttpClient). Externally build_runner now supports config specific imports as well, I am currently working on validating everything works as expected there with this change.

### New Features

* The regular `Client` factory constructor is now usable anywhere that `dart:io`
  or `dart:html` are available, and will give you an `IoClient` or
  `BrowserClient` respectively.
* The `package:http/http.dart` import is now safe to use on the web (or
  anywhere that either `dart:io` or `dart:html` are available).

### Breaking Changes

* In order to use or reference the `IoClient` directly, you will need to import
  the new `package:http/io_client.dart` import. This is typically only necessary
  if you are passing a custom `HttpClient` instance to the constructor, in which
  case you are already giving up support for web.