Ejemplo n.º 1
0
def dna(reactor, portNumber, config, tempDir, batchSize):
    print 'Config', config
    root = HandleRequestLog()

    storage = DataStorage()
    for data in config:
        oaiName = ''.join(data['path'].split('/'))
        oaiSuspendRegister = SuspendRegister()
        try:
            oaiJazz = OaiJazz(join(tempDir, oaiName), preciseDatestamp=True)  # needed for backwards compatibility with meresco-oai versions preceding 5.16
        except TypeError:
            oaiJazz = OaiJazz(join(tempDir, oaiName))
        oaiJazz = be(
            (oaiJazz,
                (oaiSuspendRegister,)
            )
        )
        oaiJazzOperations = {
            'ADD': oaiJazz.addOaiRecord,
            'DEL': oaiJazz.deleteOaiRecord
        }

        for directory in data['dirs']:
            for action, filename, setSpecs in iterOaiData(directory):
                identifier, metadataPrefix = filename.rsplit('.', 1)
                oaiJazzOperations[action](
                    identifier=identifier,
                    setSpecs=setSpecs,
                    metadataPrefixes=[metadataPrefix],
                )
                storage.addFile(filename, join(directory, escapeFilename(filename)))
                sleep(0.000001)
        oaiJazz.commit()

        try:
            oaiPmh = OaiPmh(repositoryName='Mock', adminEmail='*****@*****.**', supportXWait=True, batchSize=batchSize, preciseDatestamp=True)
        except TypeError:
            oaiPmh = OaiPmh(repositoryName='Mock', adminEmail='*****@*****.**', supportXWait=True, batchSize=batchSize)  # needed for backwards compatibility with meresco-oai versions preceding 5.16
        tree = be(
            (PathFilter(data['path'], excluding=['/ready']),
                (IllegalFromFix(),
                    (oaiPmh,
                        (oaiJazz,),
                        (oaiSuspendRegister,),
                        (storage,),
                    )
                )
            )
        )
        root.addObserver(tree)

    return \
        (Observable(),
            (ObservableHttpServer(reactor, portNumber),
                (LogCollector(),
                    (ApacheLogWriter(stdout),),
                    (root,
                        (PathFilter("/ready"),
                            (StringServer('yes', ContentTypePlainText),)
                        )
                    )
                )
            )
        )