Notificările și endpoint-urile publice ale OpenPlatform
Pe lângă lansare și verificare, OpenPlatform are câteva endpoint-uri pentru aplicații și pentru alte sisteme. Se află în controllers/verify.js, controllers/api.js și controllers/socket.js.
Trimiterea unei notificări
Răspunsul verificării conține notify, o adresă de forma <platform url>/notify/?token=<checksum of user and application>, când utilizatorul acceptă notificări. Aplicația trimite către ea un POST cu antetul x-token și un corp JSON:
| Câmp | Semnificație |
|---|---|
body | textul notificării |
path | calea din aplicație pe care o deschide notificarea |
icon, color | opționale: înlocuiesc pictograma și culoarea aplicației |
Valoarea x-token este token-ul de notificare pe care OpenPlatform îl derivă pentru acel utilizator și acea aplicație: MD5 al adresei de notificare cu sare reqtoken al aplicației și MD5 al acelui rezultat cu sare restoken al ei (FUNC.makenotify în definitions/func.js). Ambele secrete sunt aceleași pe care aplicația le partajează pentru lansare (înregistrarea unei aplicații).
OpenPlatform răspunde Invalid token când suma de control sau antetul nu se potrivesc și Not allowed notifications când utilizatorul sau aplicația nu le acceptă. Verifică și adresele permise ale aplicației și dacă utilizatorul este confirmat, activat și activ. Când totul este în regulă:
- stochează notificarea (tabelul
tbl_notification) și crește contorul de necitite al utilizatorului; - actualizează sesiunile acelui utilizator deschise în portal, astfel încât contorul apare imediat;
- publică
Notifications.createprin TMS când setarea$tmseste activă; - returnează identificatorul notificării.
Pentru utilizatorii care sunt offline și au notificări necitite, o sarcină de serviciu trimite un rezumat prin e-mail ("Unread notifications") când setările de poștă sunt configurate, cel mult o dată la trei zile pentru fiecare utilizator (definitions/init.js).
API-ul utilizatorilor (un token)
GET /users/ returnează grupurile și utilizatorii platformei ca JSON. Este dezactivat până când sunt setate allow_token și token. Apelantul trimite token-ul ca parametru de interogare token sau ca antet x-token; încercările greșite repetate sunt blocate. Utilizatorii vin fără secrete: identificator, referință, limbă, gen, fotografie (o adresă absolută), nume, e-mail, culoare, preferințe, indicatori (sa, isdisabled, isinactive, isonline), date și id-urile grupurilor lor.
Încărcarea unei imagini
POST /upload/base64/ (până la 2 MB) acceptă un corp JSON cu numele fișierului și file ca data URI și doar JPEG. Are nevoie de un utilizator autentificat sau de token-ul de interogare din setarea servicetoken (vezi setări și baza de date pentru de unde vine acea cheie). Imaginea este stocată în stocarea de fișiere files, iar răspunsul este adresa ei, /files/<id and checksum>.jpg; adresa funcționează doar cu suma de control.
Mai multe instanțe: socket-ul de sincronizare
SOCKET /sync/ conectează instanțe OpenPlatform. Un client este acceptat când setarea sync este activă și token din interogare este egal cu sync_token; orice alt client este închis cu codul 4001 la o jumătate de secundă după deschidere. Mesajele unui client confirmat sunt retransmise celorlalți, iar cât timp un client confirmat se reconectează, mesajele sunt puse în coadă cel mult zece secunde.