From e2f4a22120a2d1f839160845aaaab87ef30a3088 Mon Sep 17 00:00:00 2001 From: Bryan Davis Date: Mon, 7 Nov 2016 11:22:50 -0700 Subject: [PATCH] Support sending custom headers with all requests (#143) Allow sending custom headers (e.g. X-Wikimedia-Debug) with all requests by passing a dict of header data in the Site constructor. --- mwclient/client.py | 4 +++- tests/test_client.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/mwclient/client.py b/mwclient/client.py index 76813296..1a90d0ff 100644 --- a/mwclient/client.py +++ b/mwclient/client.py @@ -53,7 +53,7 @@ def __init__(self, host, path='/w/', ext='.php', pool=None, retry_timeout=30, max_retries=25, wait_callback=lambda *x: None, clients_useragent=None, max_lag=3, compress=True, force_login=True, do_init=True, httpauth=None, reqs=None, consumer_token=None, consumer_secret=None, access_token=None, - access_secret=None, client_certificate=None): + access_secret=None, client_certificate=None, custom_headers=None): # Setup member variables self.host = host self.path = path @@ -101,6 +101,8 @@ def __init__(self, host, path='/w/', ext='.php', pool=None, retry_timeout=30, url='https://github.com/mwclient/mwclient' ) ) + if custom_headers: + self.connection.headers.update(custom_headers) else: self.connection = pool diff --git a/tests/test_client.py b/tests/test_client.py index bcf7e031..4e4c3280 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -155,6 +155,16 @@ def test_user_agent_is_sent(self): assert 'MyFabulousClient' in responses.calls[0].request.headers['user-agent'] + @responses.activate + def test_custom_headers_are_sent(self): + # Custom headers should be sent to the server + + self.httpShouldReturn(self.metaResponseAsJson()) + + site = mwclient.Site('test.wikipedia.org', custom_headers={'X-Wikimedia-Debug': 'host=mw1099.eqiad.wmnet; log'}) + + assert 'host=mw1099.eqiad.wmnet; log' in responses.calls[0].request.headers['X-Wikimedia-Debug'] + @responses.activate def test_basic_request(self):