mirror of
https://github.com/ilri/dspace-statistics-api.git
synced 2024-12-22 12:42:19 +01:00
A simple REST API to expose Solr view and download statistics for items in a DSpace repository.
Alan Orth
4ede966dbb
This was inserting correctly on the first run, but subsequent runs were inserting into the incorrect column on conflict. This made it seem like there were downloads for items where there were none. |
||
---|---|---|
contrib | ||
.gitignore | ||
.travis.yml | ||
app.py | ||
CHANGELOG.md | ||
config.py | ||
database.py | ||
indexer.py | ||
LICENSE.txt | ||
README.md | ||
requirements.txt | ||
solr.py |
DSpace Statistics API
A simple REST API to expose Solr view and download statistics for items in a DSpace repository. This project contains a standalone indexing component and a WSGI application.
Requirements
- Python 3.5+
- PostgreSQL version 9.5+ (due to
UPSERT
support) - DSpace 4+ with Solr usage statistics enabled
Installation and Testing
Create a Python virtual environment and install the dependencies:
$ python -m venv venv
$ . venv/bin/activate
$ pip install -r requirements.txt
Set up the environment variables Solr and PostgreSQL:
$ export SOLR_SERVER=http://localhost:8080/solr
$
$ gunicorn app:api
Deployment
There are example systemd service and timer units in the contrib
directory.
Using the API
The API exposes the following endpoints:
- GET
/items
— return views and downloads for all items that Solr knows about¹. Acceptslimit
andpage
query parameters for pagination of results. - GET
/item/id
— return views and downloads for a single item (id must be a positive integer). Returns HTTP 404 if an item id is not found.
¹ We are querying the Solr statistics core, which technically only knows about items that have either views or downloads.
Todo
- Add API documentation
- Close up DB connection when gunicorn shuts down gracefully
- Better logging
- Tests
- Check if database exists (try/except)
- Version API
- Use JSON in PostgreSQL
License
This work is licensed under the GPLv3.