diff --git a/mwclient/client.py b/mwclient/client.py index 76813296531df1b42cdcb2aadd10f973ca9fee13..1a90d0ff212f2f2ec8aa8f08fc94f2748ab8b143 100644 --- a/mwclient/client.py +++ b/mwclient/client.py @@ -53,7 +53,7 @@ class Site(object): 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 @@ class Site(object): 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 bcf7e0310578466a92454b1cb2323465843fca7c..4e4c32806c614acce17b4cfcf693c8bce682829a 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -155,6 +155,16 @@ class TestClient(TestCase): 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):