From b326b64aa3a977724e677be05e51eac3919f35f8 Mon Sep 17 00:00:00 2001 From: Tyler Barrus Date: Fri, 28 Jul 2023 13:25:57 -0400 Subject: [PATCH] Add SSL Cert verification parameter; version bump (#130) * Add SSL Cert verification parameter; version bump * add full verify support --- CHANGELOG.md | 3 ++- mediawiki/mediawiki.py | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07293a7..8dd0a36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ # MediaWiki Changelog -## Future Release +## Version 0.7.3 * Add `unordered_options` to the `DisambiguationError` to attempt to get options in the order presented on the page; [issue #124](https://github.com/barrust/mediawiki/issues/124) +* Add [verify SSL support](https://requests.readthedocs.io/en/latest/user/advanced/#ssl-cert-verification) by passing info directly to the requests library. ## Version 0.7.2 diff --git a/mediawiki/mediawiki.py b/mediawiki/mediawiki.py index 12f8b3a..84b119b 100644 --- a/mediawiki/mediawiki.py +++ b/mediawiki/mediawiki.py @@ -25,7 +25,7 @@ from .utilities import memoize URL = "https://github.com/barrust/mediawiki" -VERSION = "0.7.2" +VERSION = "0.7.3" class MediaWiki(object): @@ -67,6 +67,7 @@ class MediaWiki(object): "_use_cache", "_is_logged_in", "_proxies", + "_verify_ssl", ] def __init__( @@ -81,6 +82,7 @@ def __init__( username=None, password=None, proxies=None, + verify_ssl=True, ): """ Init Function """ self._version = VERSION @@ -94,6 +96,8 @@ def __init__( self._session = None self._user_agent = ("python-mediawiki/VERSION-{0}" "/({1})/BOT").format(VERSION, URL) self._proxies = None + self._verify_ssl = None + self.verify_ssl = verify_ssl # set libary parameters if user_agent is not None: self.user_agent = user_agent @@ -227,6 +231,19 @@ def timeout(self, timeout): return self._timeout = float(timeout) # allow the exception to be raised + @property + def verify_ssl(self): + """ bool | str: Verify SSL when using requests or path to cert file """ + return self._verify_ssl + + @verify_ssl.setter + def verify_ssl(self, verify_ssl): + """ Set request verify SSL parameter; defaults to True if issue """ + self._verify_ssl = True + if isinstance(verify_ssl, (bool, str)): + self._verify_ssl = verify_ssl + self._reset_session() + @property def language(self): """ str: The API URL language, if possible this will update the API \ @@ -403,6 +420,7 @@ def _reset_session(self): self._session.headers.update(headers) if self._proxies is not None: self._session.proxies.update(self._proxies) + self._session.verify = self._verify_ssl self._is_logged_in = False def clear_memoized(self):