JJMC89 has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1181717?usp=email )
Change subject: add user-agent header to eventstream requests ...................................................................... add user-agent header to eventstream requests see https://foundation.wikimedia.org/wiki/Policy:Wikimedia_Foundation_User-Agent_Policy Bug: T402796 Change-Id: Ib581d3bcf493fd0d64393260dd57c6ad7b692299 --- M pywikibot/comms/__init__.py M pywikibot/comms/eventstreams.py M tests/eventstreams_tests.py 3 files changed, 18 insertions(+), 6 deletions(-) Approvals: JJMC89: Verified; Looks good to me, approved diff --git a/pywikibot/comms/__init__.py b/pywikibot/comms/__init__.py index e76cb24..49a9027 100644 --- a/pywikibot/comms/__init__.py +++ b/pywikibot/comms/__init__.py @@ -1,6 +1,6 @@ """Communication layer.""" # -# (C) Pywikibot team, 2008-2022 +# (C) Pywikibot team, 2008-2025 # # Distributed under the terms of the MIT license. # diff --git a/pywikibot/comms/eventstreams.py b/pywikibot/comms/eventstreams.py index 3d800b0..81a32fe 100644 --- a/pywikibot/comms/eventstreams.py +++ b/pywikibot/comms/eventstreams.py @@ -27,6 +27,7 @@ from pywikibot import Site, Timestamp, config, debug, warning from pywikibot.backports import NoneType +from pywikibot.comms.http import user_agent from pywikibot.tools import cached, deprecated_args from pywikibot.tools.collections import GeneratorWrapper @@ -207,6 +208,10 @@ kwargs['reconnection_time'] = timedelta(milliseconds=retry) kwargs.setdefault('timeout', config.socket_timeout) + + kwargs.setdefault('headers', {}) + kwargs['headers'].setdefault('user-agent', user_agent(self._site)) + self.sse_kwargs = kwargs def __repr__(self) -> str: diff --git a/tests/eventstreams_tests.py b/tests/eventstreams_tests.py index 81c1ab2..35d4a8c 100755 --- a/tests/eventstreams_tests.py +++ b/tests/eventstreams_tests.py @@ -8,6 +8,7 @@ from __future__ import annotations import json +import re import unittest from contextlib import suppress from unittest import mock @@ -45,8 +46,11 @@ self.assertEqual(e._url, e.sse_kwargs.get('url')) self.assertIsNone(e._total) self.assertIsNone(e._streams) - self.assertEqual(repr(e), - f"EventStreams(url='{self.sites[key]['hostname']}')") + self.assertRegex( + repr(e), + rf"^EventStreams\(url={self.sites[key]['hostname']!r}, " + r"headers={'user-agent': '[^']+'}\)$" + ) def test_url_from_site(self, key) -> None: """Test EventStreams with url from site.""" @@ -59,9 +63,12 @@ self.assertEqual(e._url, e.sse_kwargs.get('url')) self.assertIsNone(e._total) self.assertEqual(e._streams, streams) - site_repr = f'site={site!r}, ' if site != Site() else '' - self.assertEqual(repr(e), - f"EventStreams({site_repr}streams='{streams}')") + site_repr = re.escape(f'site={site!r}, ') if site != Site() else '' + self.assertRegex( + repr(e), + r"^EventStreams\(headers={'user-agent': '[^']+'}, " + rf'{site_repr}streams={streams!r}\)$' + ) @mock.patch('pywikibot.comms.eventstreams.EventSource', new=mock.MagicMock()) -- To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1181717?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Change-Id: Ib581d3bcf493fd0d64393260dd57c6ad7b692299 Gerrit-Change-Number: 1181717 Gerrit-PatchSet: 9 Gerrit-Owner: DerIch27 <lar...@gmx.de> Gerrit-Reviewer: JJMC89 <jjmc89.wikime...@gmail.com> Gerrit-Reviewer: jenkins-bot
_______________________________________________ Pywikibot-commits mailing list -- pywikibot-commits@lists.wikimedia.org To unsubscribe send an email to pywikibot-commits-le...@lists.wikimedia.org