From 5a01186318b79dfa90b8e428768622635333f030 Mon Sep 17 00:00:00 2001 From: Uwe Winter Date: Tue, 12 Jul 2022 17:55:55 +1000 Subject: [PATCH 1/2] Implement access_id method to resolve object with expensive url generation schema. See https://ga4gh.github.io/data-repository-service-schemas/preview/develop/docs/#tag/AccessMethodModel --- lib/galaxy/util/drs.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/galaxy/util/drs.py b/lib/galaxy/util/drs.py index 2a5ed3106d8a..c853e2a19f2d 100644 --- a/lib/galaxy/util/drs.py +++ b/lib/galaxy/util/drs.py @@ -3,10 +3,12 @@ import requests -from galaxy.util import ( - CHUNK_SIZE, - DEFAULT_SOCKET_TIMEOUT, -) +#from galaxy.util import ( +# CHUNK_SIZE, +# DEFAULT_SOCKET_TIMEOUT, +#) +CHUNK_SIZE=2048 +DEFAULT_SOCKET_TIMEOUT=60 TargetPathT = Union[str, PathLike] @@ -51,7 +53,16 @@ def fetch_drs_to_file(drs_uri: str, target_path: TargetPathT, force_http=False): raise _not_implemented(drs_uri, f"that is fetched via unimplemented types ({unimplemented_access_types})") access_method = filtered_access_methods[0] - access_url = access_method["access_url"] + try: + access_url = access_method["access_url"] + except KeyError: + access_id = access_method["access_id"] + access_get_url = f"{scheme}://{netspec}/ga4gh/drs/v1/objects/{object_id}/access/{access_id}" + access_response = requests.get(access_get_url, timeout=DEFAULT_SOCKET_TIMEOUT) + access_response.raise_for_status() + access_response_object = access_response.json() + access_url = access_response_object + url = access_url["url"] headers_list = access_url.get("headers") or [] headers_as_dict = {} From de08be00f992af327b05e235436cc45e0392b8c5 Mon Sep 17 00:00:00 2001 From: Uwe Winter Date: Tue, 12 Jul 2022 18:00:33 +1000 Subject: [PATCH 2/2] remove testing code --- lib/galaxy/util/drs.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/galaxy/util/drs.py b/lib/galaxy/util/drs.py index c853e2a19f2d..61e9f0dca0be 100644 --- a/lib/galaxy/util/drs.py +++ b/lib/galaxy/util/drs.py @@ -3,12 +3,10 @@ import requests -#from galaxy.util import ( -# CHUNK_SIZE, -# DEFAULT_SOCKET_TIMEOUT, -#) -CHUNK_SIZE=2048 -DEFAULT_SOCKET_TIMEOUT=60 +from galaxy.util import ( + CHUNK_SIZE, + DEFAULT_SOCKET_TIMEOUT, +) TargetPathT = Union[str, PathLike]