Skip to content

Commit 9338d50

Browse files
committed
Enhance authentication and client setup to support dynamic database configuration and improve logging for session token requests
1 parent 634a344 commit 9338d50

File tree

4 files changed

+16
-10
lines changed

4 files changed

+16
-10
lines changed

microSALT/utils/pubmlst/authentication.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,15 @@ def get_new_session_token(self, db: str):
3939
consumer_key, consumer_secret, access_token, access_secret = load_auth_credentials(
4040
self.service
4141
)
42+
logger.debug(f"Consumer Key: {consumer_key}")
43+
logger.debug(f"Consumer Secret: {consumer_secret}")
44+
logger.debug(f"Access Token: {access_token}")
45+
logger.debug(f"Access Secret: {access_secret}")
4246

4347
url = f"{self.base_api}/db/{db}/oauth/get_session_token"
4448

49+
logger.debug(f"Requesting session token from URL: {url}")
50+
4551
session = OAuth1Session(
4652
consumer_key=consumer_key,
4753
consumer_secret=consumer_secret,
@@ -50,6 +56,7 @@ def get_new_session_token(self, db: str):
5056
)
5157

5258
response = session.get(url, headers={"User-Agent": "BIGSdb API downloader"})
59+
logger.debug(f"Response Content: {response.content}")
5360
logger.debug(f"Response Status Code: {response.status_code}")
5461

5562
if response.ok:

microSALT/utils/pubmlst/client.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
class BaseClient:
1818
"""Base client for interacting with authenticated APIs."""
1919

20-
def __init__(self, service: str):
20+
def __init__(self, service: str, database: str = None):
2121
"""Initialize the client with the specified service."""
2222
try:
2323
self.service = service
@@ -27,7 +27,7 @@ def __init__(self, service: str):
2727
self.client_auth = ClientAuthentication(service)
2828
service_config = get_service_config(service)
2929
self.base_api = service_config["base_api"]
30-
self.database = service_config["database"]
30+
self.database = database or service_config["database"]
3131
self.base_api_host = service_config["base_api_host"]
3232
self.session_token, self.session_secret = self.client_auth.load_session_credentials(
3333
self.database
@@ -171,16 +171,16 @@ def __init__(self):
171171
class PasteurClient(BaseClient):
172172
"""Client for interacting with the Pasteur authenticated API."""
173173

174-
def __init__(self):
174+
def __init__(self, database: str):
175175
"""Initialize the Pasteur client."""
176-
super().__init__(service="pasteur")
176+
super().__init__(service="pasteur", database=database)
177177

178178

179-
def get_client(service: str):
179+
def get_client(service: str, database: str = None):
180180
"""Get the appropriate client for the specified service."""
181181
if service == "pubmlst":
182182
return PubMLSTClient()
183183
elif service == "pasteur":
184-
return PasteurClient()
184+
return PasteurClient(database=database)
185185
else:
186186
raise ValueError(f"Unknown service: {service}")

microSALT/utils/pubmlst/helpers.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ def get_service_config(service: str):
5555
"base_web": "https://bigsdb.pasteur.fr/cgi-bin/bigsdb/bigsdb.pl",
5656
"base_api": "https://bigsdb.pasteur.fr/api",
5757
"base_api_host": "bigsdb.pasteur.fr",
58-
"database": "pasteur_test_seqdef",
5958
"auth_credentials_file_name": "pasteur_credentials.env",
6059
"session_credentials_file_name": "pasteur_session_credentials.json",
6160
"config": app.config["pasteur"],

microSALT/utils/referencer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ def __init__(self, config, log, sampleinfo={}, force=False):
4848
self.sample = self.sampleinfo
4949
self.client = None
5050

51-
def set_client(self, service: str):
51+
def set_client(self, service: str, database: str = None):
5252
"""Set the client for PubMLST API interactions."""
53-
self.client: BaseClient = get_client(service)
53+
self.client: BaseClient = get_client(service, database)
5454

5555
def identify_new(self, cg_id="", project=False):
5656
"""Automatically downloads pubMLST & NCBI organisms not already downloaded"""
@@ -152,7 +152,7 @@ def fetch_external(self, force=False):
152152
currver = self.db_access.get_version("profile_{}".format(organ))
153153
st_link = entry.find("./mlst/database/profiles/url").text
154154
service: str = get_service_by_url(st_link)
155-
self.set_client(service)
155+
self.set_client(service, database=organ)
156156
# Parse the database name and scheme ID
157157
try:
158158
parsed_data = self.client.parse_url(url=st_link)

0 commit comments

Comments
 (0)