Example #1
0
    def identify(self, arguments, **httpkwargs):
        responseDate = zuluTime()
        if arguments.keys() != ['verb']:
            additionalMessage = 'Argument(s) %s is/are illegal.' % ", ".join('"%s"' % key for key in arguments.keys() if key != 'verb')
            yield oaiError('badArgument',
                    additionalMessage=additionalMessage,
                    arguments=arguments,
                    requestUrl=self._repository.requestUrl(**httpkwargs),
                    **httpkwargs)
            return

        repositoryIdentifier = self._repository.identifier
        descriptionRepositoryIdentifier = '' if not repositoryIdentifier else DESCRIPTION_REPOSITORY_IDENTIFIER % {'repositoryIdentifier': escapeXml(repositoryIdentifier)}

        values = {
            'repositoryName': escapeXml(self._repository.name),
            'baseURL': escapeXml(self._repository.requestUrl(**httpkwargs)),
            'adminEmails': ''.join([ADMIN_EMAIL % escapeXml(email) for email in [self._repository.adminEmail]]),
            'deletedRecord': self.call.getDeletedRecordType(),
        }
        values.update(hardcoded_values)
        yield oaiHeader(self, responseDate)
        yield oaiRequestArgs(arguments, requestUrl=self._repository.requestUrl(**httpkwargs), **httpkwargs)
        yield '<Identify>'
        yield IDENTIFY % values
        yield descriptionRepositoryIdentifier
        yield TOOLKIT_DESCRIPTION
        yield self.all.description()
        yield '</Identify>'
        yield oaiFooter()
Example #2
0
    def getRecord(self, arguments, **httpkwargs):
        responseDate = zuluTime()
        verb = arguments.get('verb', [None])[0]
        if not verb == 'GetRecord':
            return

        try:
            validatedArguments = self._validateArguments(arguments)
            identifier = validatedArguments['identifier']
            if self._repository:
                identifier = self._repository.unprefixIdentifier(identifier)
            metadataPrefix = validatedArguments['metadataPrefix']
            record = self.call.getRecord(identifier=identifier, metadataPrefix=metadataPrefix)
            self._validateValues(record, metadataPrefix)
        except OaiException, e:
            yield oaiError(e.statusCode, e.additionalMessage, arguments, requestUrl=self._repository.requestUrl(**httpkwargs), **httpkwargs)
            return
Example #3
0
    def listSets(self, arguments, **httpkwargs):
        responseDate = zuluTime()
        verb = arguments.get('verb', [None])[0]
        if not verb == 'ListSets':
            return

        try:
            validatedArguments = self._validateArguments(arguments)
            if 'resumptionToken' in validatedArguments:
                raise OaiException('badResumptionToken')

            sets = self.call.getAllSets(includeSetNames=True)
            if len(sets) == 0:
                raise OaiException('noSetHierarchy')
        except OaiException, e:
            yield oaiError(e.statusCode, e.additionalMessage, arguments, requestUrl=self._repository.requestUrl(**httpkwargs), **httpkwargs)
            return
Example #4
0
    def listMetadataFormats(self, arguments, **httpkwargs):
        responseDate = zuluTime()
        verb = arguments.get('verb', [None])[0]
        if not verb == 'ListMetadataFormats':
            return

        try:
            validatedArguments = self._validateArguments(arguments)
            metadataFormats = self.call.getAllMetadataFormats()
            if 'identifier' in validatedArguments:
                identifier = validatedArguments['identifier']
                if self._repository:
                    identifier = self._repository.unprefixIdentifier(identifier)
                record = self.call.getRecord(identifier=identifier)
                if record is None:
                    raise OaiException('idDoesNotExist')
                metadataFormats = [(prefix, xsd, ns) for prefix, xsd, ns in metadataFormats if prefix in record.prefixes]
            displayedMetadataFormats = sorted(metadataFormats)
        except OaiException, e:
            yield oaiError(e.statusCode, e.additionalMessage, arguments, requestUrl=self._repository.requestUrl(**httpkwargs), **httpkwargs)
            return