From a300135a82085950dd324b31a4330736f080bbd3 Mon Sep 17 00:00:00 2001 From: Christian Monch Date: Fri, 2 Jun 2023 06:57:16 +0200 Subject: [PATCH] use HttpUrlOperations.probe_url for realm retrival This commit changes the test utilities to use existing functionality in HttpUrlOperations to determine the authentication realm of a URL. --- tests/test_datalad_workflows/utils.py | 30 ++++++++++++++------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/tests/test_datalad_workflows/utils.py b/tests/test_datalad_workflows/utils.py index 758dde1..0bb9791 100644 --- a/tests/test_datalad_workflows/utils.py +++ b/tests/test_datalad_workflows/utils.py @@ -1,22 +1,24 @@ from __future__ import annotations -import requests -import www_authenticate +from datalad_next.url_operations.http import HttpUrlOperations def get_restricted_realm(url: str) -> str | None: - """A very simple function to get the realm for restricted access + """Get the realm for basic auth-restricted access - This will only work, if the server returns a 'www-authenticate'- - header, and if the authentication method is 'basic' - """ + Parameters + ---------- + url: str + URL to probe - r = requests.get(url) + Returns + ------- + str | None + The name of the realm for basic authentication + or None, if either no authentication is required, + or if the authentication type is not "basic" + """ - auth_header_name = 'WWW-Authenticate' - auth_header = r.headers.get(auth_header_name, None) - if auth_header: - parsed = www_authenticate.parse(auth_header) - if 'Basic' in parsed: - return parsed['Basic']['realm'] - return None + http_url_ops = HttpUrlOperations() + _, url_properties = http_url_ops.probe_url(url) + return url_properties.get('auth', {}).get('basic', {}).get('realm')