Skip to content

Commit 7ea127b

Browse files
committed
added connection_options to osw.wtsite.WtSite.WtSiteConfig to be passed through to mwclient.Site / requests
1 parent 5703e10 commit 7ea127b

2 files changed

Lines changed: 23 additions & 11 deletions

File tree

src/osw/auth.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,8 @@ def get_credential(self, config: CredentialConfig) -> BaseCredential:
140140
if cred is None:
141141
if config.fallback is CredentialManager.CredentialFallback.ask:
142142
print(
143-
f"No credentials for {config.iri} found. Please use the prompt to login"
143+
f"No credentials for {config.iri} found. "
144+
f"Please use the prompt to login"
144145
)
145146
username = input("Enter username: ")
146147
password = getpass.getpass("Enter password: ")

src/osw/wtsite.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from pathlib import Path
1313
from pprint import pprint
1414
from time import sleep
15-
from typing import Dict, List, Optional, Union
15+
from typing import Any, Dict, List, Optional, Union
1616

1717
import mwclient
1818
from jsonpath_ng.ext import parse
@@ -57,6 +57,9 @@ class WtSiteConfig(OswBaseModel):
5757
login: Optional[str]
5858
"""The preferred login name when multiple logins are possible (not supported
5959
yet)"""
60+
connection_options: Optional[Dict[str, Any]] = None
61+
"""Parameters for the mwclient.Site connection: Additional arguments to be
62+
passed to the requests.Session.request() method when performing API calls."""
6063

6164
@deprecated("Use WtSiteConfig instead")
6265
class WtSiteLegacyConfig(OswBaseModel):
@@ -91,19 +94,27 @@ def __init__(self, config=Union[WtSiteConfig, WtSiteLegacyConfig]):
9194
if "//" in config.iri:
9295
scheme = config.iri.split("://")[0]
9396
config.iri = config.iri.split("://")[1]
97+
site_args = [config.iri]
98+
site_kwargs = {
99+
"path": "/w/",
100+
"scheme": scheme,
101+
}
102+
if getattr(config, "connection_options") is not None:
103+
site_kwargs["reqs"] = config.connection_options
104+
# reqs might be a deprecated alias for "connection_options"
94105
if isinstance(cred, CredentialManager.UserPwdCredential):
95-
self._site = mwclient.Site(config.iri, path="/w/", scheme=scheme)
106+
self._site = mwclient.Site(*site_args, **site_kwargs)
96107
self._site.login(username=cred.username, password=cred.password)
97108
elif isinstance(cred, CredentialManager.OAuth1Credential):
98-
self._site = mwclient.Site(
99-
config.iri,
100-
path="/w/",
101-
scheme=scheme,
102-
consumer_token=cred.consumer_token,
103-
consumer_secret=cred.consumer_secret,
104-
access_token=cred.access_token,
105-
access_secret=cred.access_secret,
109+
site_kwargs.update(
110+
**{
111+
"consumer_token": cred.consumer_token,
112+
"consumer_secret": cred.consumer_secret,
113+
"access_token": cred.access_token,
114+
"access_secret": cred.access_secret,
115+
}
106116
)
117+
self._site = mwclient.Site(*site_args, **site_kwargs)
107118
else:
108119
raise ValueError("Unsupported credential type: " + str(type(cred)))
109120
del cred

0 commit comments

Comments
 (0)