diff --git a/sru/almasru.py b/sru/almasru.py index d24e2d2ee39e80cbed51b89b497efd4b6d8582d8..1107a0b30f99e79a0bb4029e2e27a2114e6b52a0 100644 --- a/sru/almasru.py +++ b/sru/almasru.py @@ -71,7 +71,7 @@ class RecordRetriever: 'marc': 'http://www.loc.gov/MARC21/slim' } - def get_single(self, alma_query: str) -> Element: + def get_unique(self, alma_query: str) -> Element: """Return one MARC XML record for a specific query. :param alma_query: URI-parameter query for SRU request @@ -87,7 +87,7 @@ class RecordRetriever: sru_url = self._create_url(alma_query, startrecord) sru_xml = self._response_to_xml(sru_url) - self._raise_errors_single_records(sru_xml) + self._raise_errors_unique_record(sru_xml) xml_list = self._extract_marc_xml(sru_xml) return xml_list[0] @@ -102,7 +102,14 @@ class RecordRetriever: return sru_url - def _raise_errors_single_records(self, sru_xml: Element): + def _response_to_xml(self, sru_url): + + response = request.urlopen(sru_url).read() + sru_xml = fromstring(response) + + return sru_xml + + def _raise_errors_unique_record(self, sru_xml: Element): num_recs = sru_xml.find("srw:numberOfRecords", self.namespaces) @@ -138,7 +145,7 @@ class RecordRetriever: """ alma_query = f'alma.local_control_field_009={marc_009}' - return self.get_single(alma_query) + return self.get_unique(alma_query) def by_barcode(self, barcode: str) -> Element: """Return record by barcode. @@ -146,7 +153,7 @@ class RecordRetriever: param barcode: Barcode of a specific item.""" alma_query = f'alma.barcode={barcode}' - return self.get_single(alma_query) + return self.get_unique(alma_query) def by_mms_id(self, mms_id: str) -> Element: """Return record by MMS-ID. @@ -154,4 +161,4 @@ class RecordRetriever: param mmsid: MMS-ID of a specific item.""" alma_query = f'alma.mms_id={mms_id}' - return self.get_single(alma_query) + return self.get_unique(alma_query)