def index(self): '''Return the result of the handled request of a batching OAI-PMH server implementation. ''' if 'verb' in request.params: verb = request.params['verb'] if request.params['verb'] else None if verb: client = CKANServer() metadata_registry = oaimd.MetadataRegistry() metadata_registry.registerReader('oai_dc', oaimd.oai_dc_reader) metadata_registry.registerWriter('oai_dc', oaisrv.oai_dc_writer) metadata_registry.registerReader('rdf', rdf_reader) metadata_registry.registerWriter('rdf', dcat2rdf_writer) metadata_registry.registerWriter('oai_datacite', datacite_writer) metadata_registry.registerWriter('oai_b2f', b2f_writer) serv = oaisrv.BatchingServer( client, metadata_registry=metadata_registry, resumption_batch_size=500) parms = request.params.mixed() res = serv.handleRequest(parms) response.headers['content-type'] = 'text/xml; charset=utf-8' return res else: return render('ckanext/oaipmh/oaipmh.html')
def getServer(self): directory = os.path.dirname(__file__) fake1 = os.path.join(directory, 'fake1') myserver = fakeclient.FakeClient(fake1) metadata_registry = metadata.MetadataRegistry() metadata_registry.registerWriter('oai_dc', server.oai_dc_writer) return server.Server(myserver, metadata_registry)
def setUp(self): self._fakeserver = fakeserver.FakeServer() metadata_registry = metadata.MetadataRegistry() metadata_registry.registerWriter('oai_dc', server.oai_dc_writer) metadata_registry.registerReader('oai_dc', metadata.oai_dc_reader) self._server = server.Server(self._fakeserver, metadata_registry, resumption_batch_size=7)
def getServer(): myserver = ss_server.BatchingSharedShelfServerBase() metadata_registry = metadata.MetadataRegistry() metadata_registry.registerWriter('oai_dc', server.oai_dc_writer) metadata_registry.registerWriter('oai_ssio', ss_server.oai_ssio_writer) return server.BatchingServer(myserver, metadata_registry, resumption_batch_size=10)
def test_tree_resumption(self): metadata_registry = metadata.MetadataRegistry() metadata_registry.registerWriter('oai_dc', server.oai_dc_writer) myserver = server.XMLTreeServer(self._server, metadata_registry) tree = myserver.listIdentifiers(metadataPrefix='oai_dc') self.assert_(oaischema.validate(tree)) # we should find a resumptionToken element with text self.assert_( tree.xpath('//oai:resumptionToken/text()', namespaces={'oai': NS_OAIPMH}))
def setUp(self): self._fakeserver = fakeserver.FakeServer() metadata_registry = metadata.MetadataRegistry() metadata_registry.registerWriter('oai_dc', server.oai_dc_writer) metadata_registry.registerReader('oai_dc', metadata.oai_dc_reader) self._xmlserver = server.XMLTreeServer( self._fakeserver, metadata_registry, nsmap={'cow': 'http://www.cow.com'}) self._server = server.Server(self._fakeserver, metadata_registry, nsmap={'cow': 'http://www.cow.com'})
def create_metadata_registry(harvest_type=None, service_url=None): '''Return new metadata registry with all common metadata readers The readers currently implemented are for metadataPrefixes oai_dc, nrd, rdf and xml. :returns: metadata registry instance :rtype: oaipmh.metadata.MetadataRegistry ''' registry = om.MetadataRegistry() registry.registerReader('oai_dc', dc_metadata_reader(harvest_type or 'default')) registry.registerReader('cmdi0571', CmdiReader(service_url)) registry.registerReader('oai_datacite3', DataCiteReader()) registry.registerReader('nrd', nrd_metadata_reader) registry.registerReader('rdf', rdf_reader) registry.registerReader('xml', xml_reader) return registry
def main(global_config, **settings): settings.update(parse_settings(settings)) config = Configurator(settings=settings) config.add_route("root", "/") config.scan() mongo = mongodb.MongoDB( settings["oaipmh.mongodb.dsn"], settings["oaipmh.mongodb.dbname"], options={ "replicaSet": settings["oaipmh.mongodb.replicaset"], "readPreference": settings["oaipmh.mongodb.readpreference"], }, ) context = { "url_for_html": lambda acron, doc_id: urljoin(settings["oaipmh.site.baseurl"], f"/j/{acron}/a/{doc_id}"), } session = mongodb.Session(mongo, context=context) metadata_registry = metadata.MetadataRegistry() for fmt in METADATA_FORMATS: metadata_registry.registerWriter(fmt[0], fmt[3]) earliest_datestamp = session.documents.earliest_datestamp() or parse_date( "1998-01-01") oaiserver = server.BatchingServer( OAIServer( session, meta=server_identity(settings, earliest_datestamp=earliest_datestamp), formats=METADATA_FORMATS, ), metadata_registry=metadata_registry, resumption_batch_size=settings["oaipmh.resumptiontoken.batchsize"], ) config.add_request_method(lambda request: oaiserver, "oaiserver", reify=True) return config.make_wsgi_app()
class MARCXMLReader(object): """Returns the PyMARC record from the OAI structure for MARC XML""" def __call__(self, element): print element[0][1].text handler = marcxml.XmlHandler() marcxml.parse_xml(StringIO(tostring(element[0])), handler) return handler.records[0] marcxml_reader = MARCXMLReader() # Defining of metadata Readers in the Registry from oaipmh import metadata registry = metadata.MetadataRegistry() registry.registerReader('marc21', marcxml_reader) #### OAI-PMH Client processing oai = Client('http://snape.mzk.cz/OAI-script', registry) recs = oai.listRecords(metadataPrefix='marc21', set='MZK03') for rec in recs: print rec[0].identifier() r = rec[1] # Get pyMARC representation print r['856'] print r['034'] print r['008'] print