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

Reply via email to