Create a GuzzleHttpRequest class using the external Guzzle (docs.guzzlephp.org) library. This will be the new default request type, but CurlHttpRequest and PhpHttpRequest will remain available and accessible via Http::$httpEngine
This has several positives, including:
- increases parity and consistency between mediawiki installations with and without curl installed (Guzzle automatically falls back to php streams if curl is unavailable)
- brings Guzzle into the codebase, making it available to other areas that might benefit from it (ex. MultiHttpClient)
- provides a path to reducing the amount of custom code we must maintain (we could deprecate and eventually remove CurlHttpRequest and PhpHttpRequest)
It also has a few negatives, including:
- at least temporarily, adds additional code without removing any
- ties us to external code over which we have less control
This task flows from discussion in T110022 and T139169 and is hopefully a big step toward addressing T137926. (MultiHttpClient still needs addressed, presumably also via Guzzle. I intend to do that under a separate task.)