ForgeOpenPlatform
de

OpenPlatform

Benachrichtigungen und die öffentlichen Endpunkte von OpenPlatform

OpenPlatform · openplatform@5 openplatformnotificationsapitms

Neben dem Start und der Verifizierung hat OpenPlatform einige Endpunkte für die Anwendungen und für andere Systeme. Sie stehen in controllers/verify.js, controllers/api.js und controllers/socket.js.

Eine Benachrichtigung senden

Die Antwort der Verifizierung enthält notify, eine Adresse der Form <platform url>/notify/?token=<checksum of user and application>, wenn der Benutzer Benachrichtigungen akzeptiert. Die Anwendung sendet ein POST dorthin mit dem Header x-token und einem JSON-Body:

FeldBedeutung
bodyder Text der Benachrichtigung
pathder Pfad innerhalb der Anwendung, den die Benachrichtigung öffnet
icon, coloroptional: ersetzen Icon und Farbe der Anwendung

Der Wert von x-token ist das Benachrichtigungs-Token, das OpenPlatform für diesen Benutzer und diese Anwendung ableitet: der MD5 der Benachrichtigungsadresse mit dem reqtoken der Anwendung als Salt und der MD5 dieses Ergebnisses mit ihrem restoken als Salt (FUNC.makenotify in definitions/func.js). Beide Geheimnisse sind dieselben, die die Anwendung für den Start teilt (Eine App registrieren).

OpenPlatform antwortet Invalid token, wenn Prüfsumme oder Header nicht passen, und Not allowed notifications, wenn der Benutzer oder die Anwendung sie nicht akzeptiert. Es prüft außerdem die erlaubten Adressen der Anwendung und dass der Benutzer bestätigt, aktiviert und aktiv ist. Wenn alles stimmt:

  1. speichert es die Benachrichtigung (Tabelle tbl_notification) und erhöht den Zähler ungelesener Nachrichten des Benutzers;
  2. aktualisiert es die im Portal geöffneten Sitzungen dieses Benutzers, damit der Zähler sofort erscheint;
  3. veröffentlicht es Notifications.create per TMS, wenn die Einstellung $tms aktiv ist;
  4. gibt es die Kennung der Benachrichtigung zurück.

Für Benutzer, die offline sind und ungelesene Benachrichtigungen haben, sendet ein Dienstjob eine E-Mail-Zusammenfassung ("Unread notifications"), wenn die Mail-Einstellungen konfiguriert sind, höchstens einmal alle drei Tage pro Benutzer (definitions/init.js).

Die Benutzer-API (ein Token)

GET /users/ liefert die Gruppen und Benutzer der Plattform als JSON. Sie ist deaktiviert, bis die Einstellungen allow_token und token gesetzt sind. Der Aufrufer sendet das Token als Query-Parameter token oder als Header x-token; wiederholte falsche Versuche werden gesperrt. Die Benutzer kommen ohne Geheimnisse: Kennung, Referenz, Sprache, Geschlecht, Foto (eine absolute Adresse), Name, E-Mail, Farbe, Einstellungen, Flags (sa, isdisabled, isinactive, isonline), Daten und die Ids ihrer Gruppen.

Ein Bild hochladen

POST /upload/base64/ (bis 2 MB) akzeptiert einen JSON-Body mit dem Dateinamen und file als Data-URI, und nur JPEG. Es braucht einen angemeldeten Benutzer oder das Query-Token der Einstellung servicetoken (siehe Einstellungen und Datenbank, woher dieser Schlüssel kommt). Das Bild wird im Dateispeicher files abgelegt, und die Antwort ist seine Adresse, /files/<id and checksum>.jpg; die Adresse funktioniert nur mit der Prüfsumme.

Mehrere Instanzen: der Sync-Socket

SOCKET /sync/ verbindet Instanzen von OpenPlatform. Ein Client wird akzeptiert, wenn die Einstellung sync aktiv ist und das Query-token gleich sync_token ist; jeder andere Client wird eine halbe Sekunde nach dem Öffnen mit dem Code 4001 geschlossen. Die Nachrichten eines bestätigten Clients werden an die anderen weitergereicht, und während sich ein bestätigter Client neu verbindet, werden die Nachrichten bis zu zehn Sekunden lang in eine Warteschlange gestellt.