Add User-Agent support to MultiHttpClient requests

Because it is polite to send a User-Agent (and as part of T114558
investigation).

Change-Id: I5096896d0891c0c9674ff8b4284aaa3ac7293c67
This commit is contained in:
Tim Starling 2015-10-06 12:07:29 +11:00
parent e9f2a3b39d
commit 6f51037d68

View file

@ -55,6 +55,8 @@ class MultiHttpClient {
protected $maxConnsPerHost = 50;
/** @var string|null proxy */
protected $proxy;
/** @var string */
protected $userAgent = 'MW-MultiHttpClient';
/**
* @param array $options
@ -63,6 +65,7 @@ class MultiHttpClient {
* - proxy : HTTP proxy to use
* - usePipelining : whether to use HTTP pipelining if possible (for all hosts)
* - maxConnsPerHost : maximum number of concurrent connections (per host)
* - userAgent : The User-Agent header value to send
* @throws Exception
*/
public function __construct( array $options ) {
@ -73,7 +76,7 @@ class MultiHttpClient {
}
}
static $opts = array(
'connTimeout', 'reqTimeout', 'usePipelining', 'maxConnsPerHost', 'proxy'
'connTimeout', 'reqTimeout', 'usePipelining', 'maxConnsPerHost', 'proxy', 'userAgent'
);
foreach ( $opts as $key ) {
if ( isset( $options[$key] ) ) {
@ -343,6 +346,10 @@ class MultiHttpClient {
$req['headers']['content-length'] = 0;
}
if ( !isset( $req['headers']['user-agent'] ) ) {
$req['headers']['user-agent'] = $this->userAgent;
}
$headers = array();
foreach ( $req['headers'] as $name => $value ) {
if ( strpos( $name, ': ' ) ) {