2018-09-23 22:02:21 +02:00
|
|
|
|
# DSpace Statistics API
|
2018-09-27 08:07:28 +02:00
|
|
|
|
A simple REST API to expose Solr view and download statistics for items in a DSpace repository.
|
2018-09-18 13:11:29 +02:00
|
|
|
|
|
2018-09-27 07:57:27 +02:00
|
|
|
|
## Requirements
|
|
|
|
|
|
|
|
|
|
- Python 3.5+
|
|
|
|
|
- PostgreSQL version 9.5+ (due to [`UPSERT` support](https://wiki.postgresql.org/wiki/UPSERT)).
|
|
|
|
|
- DSpace 4+ with [Solr usage statistics enabled](https://wiki.duraspace.org/display/DSDOC5x/SOLR+Statistics)
|
2018-09-18 13:09:29 +02:00
|
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
Create a virtual environment and run it:
|
|
|
|
|
|
2018-09-25 11:07:58 +02:00
|
|
|
|
$ python -m venv venv
|
2018-09-18 13:09:29 +02:00
|
|
|
|
$ . venv/bin/activate
|
2018-09-25 10:02:50 +02:00
|
|
|
|
$ pip install -r requirements.txt
|
2018-09-18 13:09:29 +02:00
|
|
|
|
$ gunicorn app:api
|
|
|
|
|
|
2018-09-25 10:28:12 +02:00
|
|
|
|
## Using the API
|
|
|
|
|
The API exposes the following endpoints:
|
|
|
|
|
|
2018-09-25 10:34:07 +02:00
|
|
|
|
- GET `/items` — return views and downloads for all items that Solr knows about¹. Accepts `limit` and `page` query parameters for pagination of results.
|
2018-09-25 12:12:53 +02:00
|
|
|
|
- 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.
|
2018-09-25 10:28:12 +02:00
|
|
|
|
|
2018-09-25 11:24:52 +02:00
|
|
|
|
¹ We are querying the Solr statistics core, which technically only knows about items that have either views or downloads.
|
2018-09-25 10:28:12 +02:00
|
|
|
|
|
2018-09-18 13:19:14 +02:00
|
|
|
|
## Todo
|
|
|
|
|
|
2018-09-23 08:52:36 +02:00
|
|
|
|
- Add API documentation
|
2018-09-23 23:35:00 +02:00
|
|
|
|
- Close up DB connection when gunicorn shuts down gracefully
|
|
|
|
|
- Better logging
|
2018-09-25 10:28:12 +02:00
|
|
|
|
- Tests
|
2018-09-18 13:19:14 +02:00
|
|
|
|
|
2018-09-18 13:16:07 +02:00
|
|
|
|
## License
|
|
|
|
|
This work is licensed under the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html).
|