REST Service for POPCORN - ILIAS
edit | blame | history | raw

Globus-ILIAS-Rest

REST Service für POPCORN -> ILIAS.
Stellt in ILIAS-SOAP fehlende Funktionen bereit für POPCORN (GS-2101).

Voraussetzungen

  • node >= v22
  • pm2

Setup

Env und Settings

Als Erstes wird die ENV Variable "NODE_ENV" gebraucht. Diese muss gesetzt sein.
Je nach ENV (dev, test, prod, ...) muss dann auch die settings Datei angepasst werden.

Service

Der REST-Service an sich muss auf dem gleichen Rechner laufen auf dem auch die ILIAS DB läuft (ansonsten die Config anpassen).

node app.js

bzw. bei Nutzung von pm2 (empfohlen)

pm2 start app.js --name globus-ilias-rest
pm2 save

PHP Komponente

globus-ilias-rest benötigt eine PHP Komponente um die ILIAS internen Funktionen nutzen zu können.
Dazu den Ordner "php/globus-ilias-rest" im Projektverzeichnis symlinken in den ILIAS Basisordner (wo sich auch ilias.php befindet).

cd $ILIASBASEDIR
ln -s $RESTPROJ/php/globus-ilias-rest globus-ilias-rest

Apache Config

Apache muss als Proxy für globus-ilias-rest fungieren und Verbindungen an diesen weiterreichen.

ACHTUNG
Der Service muss unter https laufen. Ansonsten kann das AUTH-TOKEN ausgelesen werden.

MOds aktivieren

a2enmod proxy
a2enmod proxy_http

Apache Config anpassen

z.B. unter /etc/apache2/sites-available/globusfm-dev2.minervis.com.conf

# Proxy all requests to /popcorn/... to the globus-ilias-rest service
ProxyPreserveHost On
ProxyPass /popcorn http://localhost:4101         
ProxyPassReverse /popcorn http://localhost:4101

testen

https://globusfm-dev2.minervis.com/popcorn/users?token=AUTHTOKEN

Usage

Es wird ein Auth-Token gebraucht um den Service zu benutzen. Dieses wird in settings.js definiert.

Dann kann der Service angesprochen werden (test mit curl):

curl localhost:4101/users?token=AUTHTOKEN

Die Antwort prettyfeien:

curl localhost:4101/users?token=AUTHTOKEN | jq .

globusfm-dev2

Kann zugegriffen werden über

https://globusfm-dev2.minervis.com/popcorn/users?token=$TOKEN

Routes

Verfügbare Routen sind:

GET /users
GET /users/count
GET /user/login/:login
GET /user/userId/:userId

GET /kurs
GET /kurs/items/:ref_id
GET /kurs/teilnehmer/:ref_id
GET /kurs/teilnehmer/:ref_id/count