This is a system of 3 services that in conjunction implements [http://www.openarchives.org/OAI/openarchivesprotocol.html](OpenArchive OAI)
This system is built upon data from https://github.com/DBCDK/rawrepo
The services are
- setmatcher
- formatter
- service
The specification allows for sets, which the setmatcher
is accountable for
transforming into lists, that the service
can provide to the user.
The setmatcher
is hooked up upon a queue in
https://github.com/DBCDK/rawrepo where it gets notified of all the
records that has been changed. It
https://github.com/DBCDK/rawrepo-record-service-connector/ the record
and runs a JavaScript upon the
https://www.loc.gov/standards/iso25577/ XML record listing
which sets this record is a member of if any. This is written to a database for
later use.
The service
is exposed to the user as the only entrypoint. It implements
OAI 2.0, and exposes the lists generated by setmatcher
. The protocol has been
extended to accommodate for free/non-free datasets.
The protocon has an identity
parameter that is a triple of
{userid}:{group}:{password}
the group is the agency that pays for the access.
This can also be sent as h HTTP request header Idenitiy
, but the query
parameter overrides the request header. IP based authentication is also an
option.
Anonymous access to the free sets is acquired by not sending any identity. IP based authentication is tried, but if that fails, default authentication is used.
When using the verb
(OAI command) called GetRecord
or ListRecords
then the
final of the three services (formatter
) is in play. It is a JavaScript
formatter that fetches the record in question from RawRepo
, just like
setmatcher
. Given a format (currently only oai_dc
and marcx
) it produces
an XML document, to embed in the service
response.