|
5 | 5 | import rdflib |
6 | 6 | import requests # type: ignore |
7 | 7 |
|
8 | | -from typing import Optional |
| 8 | +from typing import Optional, Union |
9 | 9 |
|
10 | 10 | logger = logging.getLogger(__name__) |
11 | 11 |
|
@@ -33,6 +33,16 @@ def _query_for_ils_info(graph_jsonld: str, uri: str) -> dict: |
33 | 33 | return output |
34 | 34 |
|
35 | 35 |
|
| 36 | +def _get_relationships(resource_uri: str) -> Union[list, None]: |
| 37 | + result = requests.get(f"{resource_uri}/relationships") |
| 38 | + if result.status_code > 399: |
| 39 | + msg = f"Failed to retrieve {resource_uri}: {result.status_code}\n{result.text}" |
| 40 | + logging.error(msg) |
| 41 | + return None |
| 42 | + |
| 43 | + return result.json().get("sinopiaHasLocalAdminMetadataInferredRefs") |
| 44 | + |
| 45 | + |
36 | 46 | def _get_retrieve_metadata_resource(uri: str) -> Optional[dict]: |
37 | 47 | """Retrieves AdminMetadata resource and extracts any ILS identifiers""" |
38 | 48 | metadata_result = requests.get(uri) |
@@ -76,13 +86,10 @@ def _retrieve_all_resource_refs( |
76 | 86 | if target_resource_id: |
77 | 87 | retrieved_resources[resource_uri] = [{default_ils: target_resource_id}] |
78 | 88 | continue |
79 | | - result = requests.get(f"{resource_uri}/relationships") |
80 | | - if result.status_code > 399: |
81 | | - msg = f"Failed to retrieve {resource_uri}: {result.status_code}\n{result.text}" |
82 | | - logging.error(msg) |
83 | | - continue |
84 | 89 |
|
85 | | - metadata_uris = result.json().get("sinopiaHasLocalAdminMetadataInferredRefs") |
| 90 | + metadata_uris = _get_relationships(resource_uri) |
| 91 | + if metadata_uris is None: |
| 92 | + continue |
86 | 93 |
|
87 | 94 | ils_info = _retrieve_all_metadata(metadata_uris) |
88 | 95 | if ils_info: |
|
0 commit comments