From: olivier <> Date: Fri, 3 Apr 2009 14:17:37 +0000 (+0000) Subject: #67: add OAI-PMH !ListSets and !ListMetadataFormats methods X-Git-Tag: 1.1~710 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=ee4d7c02c52bf2443d85b23a75ba6181c574a3f3;p=telemeta.git #67: add OAI-PMH !ListSets and !ListMetadataFormats methods --- diff --git a/telemeta/interop/oai.py b/telemeta/interop/oai.py index 15ec5e3d..2712e25b 100644 --- a/telemeta/interop/oai.py +++ b/telemeta/interop/oai.py @@ -185,6 +185,12 @@ class DataProvider(object): token = args.get('resumptionToken') if validator.validate(): response.list_records(from_time, until_time, token, ids_only = (verb == 'ListIdentifiers')) + elif verb == 'ListSets': + validator.optional('resumptionToken') + validator.validate() and response.error('noSetHierarchy') + elif verb == 'ListMetadataFormats': + validator.optional('identifier') + validator.validate() and response.list_formats(args.get('identifier')) try: doc = libxml2.parseDoc(response.doc.toxml(encoding="utf-8")) @@ -345,6 +351,23 @@ class Response(object): token.setAttribute('completeListSize', str(count)) else: self.error("noRecordsMatch") + + def list_formats(self, id = None): + """Append ListMetadataFormats result""" + if id: + record = self.datasource.get_record(id) + if not record: + self.error('idDoesNotExist') + return + self.request.setAttribute('identifier', id) + + container = self.root.appendChild(self.doc.createElement(self.verb)) + format = container.appendChild(self.doc.createElement('metadataFormat')) + self.append_elements(format, { + 'metadataPrefix': 'oai_dc', + 'schema': 'http://www.openarchives.org/OAI/2.0/oai_dc.xsd', + 'metadataNamespace': 'http://www.openarchives.org/OAI/2.0/oai_dc/' + }) def free(self): """Free the resources used by this response"""