1
0
mirror of https://github.com/ilri/dspace-statistics-api.git synced 2024-11-22 06:15:02 +01:00
A simple REST API to expose Solr view and download statistics for items in a DSpace repository.
Go to file
Alan Orth 4ede966dbb
indexer.py: Fix logic error in SQL insert
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.
2018-10-05 00:16:24 +03:00
contrib contrib/dspace-statistics-indexer.timer: Fix syntax 2018-09-25 23:07:03 +03:00
.gitignore Update docs to remove SQLite stuff 2018-09-25 00:56:01 +03:00
.travis.yml .travis.yml: Add Python 3.7 2018-09-25 12:17:20 +03:00
app.py app.py: Iterate directly on cursor 2018-09-27 11:03:44 +03:00
CHANGELOG.md CHANGELOG.md: Add note about cursor change 2018-09-27 11:08:42 +03:00
config.py Use PostgreSQL instead of SQLite 2018-09-25 00:49:47 +03:00
database.py database.py: Use one line for psycopg2 imports 2018-09-26 22:23:24 +03:00
indexer.py indexer.py: Fix logic error in SQL insert 2018-10-05 00:16:24 +03:00
LICENSE.txt Add GPLv3 license 2018-09-18 14:16:07 +03:00
README.md README.md: Add TODO about JSON in PostgreSQL 2018-10-03 20:08:18 +03:00
requirements.txt requirements.txt: pip freeze 2018-09-27 09:53:16 +03:00
solr.py Refactor Solr components 2018-09-23 13:24:30 +03:00

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

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 /itemsreturn views and downloads for all items that Solr knows about¹. Accepts limit and page query parameters for pagination of results.
  • GET /item/idreturn 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.