Ειδοποιήσεις και τα δημόσια endpoints του OpenPlatform
Εκτός από την εκκίνηση και την επαλήθευση, το OpenPlatform έχει μερικά endpoints για τις εφαρμογές και για άλλα συστήματα. Βρίσκονται στα controllers/verify.js, controllers/api.js και controllers/socket.js.
Αποστολή ειδοποίησης
Η απάντηση της επαλήθευσης περιέχει το notify, μια διεύθυνση της μορφής <platform url>/notify/?token=<checksum of user and application>, όταν ο χρήστης δέχεται ειδοποιήσεις. Η εφαρμογή στέλνει σε αυτήν ένα POST με την κεφαλίδα x-token και σώμα JSON:
| Πεδίο | Σημασία |
|---|---|
body | το κείμενο της ειδοποίησης |
path | η διαδρομή μέσα στην εφαρμογή που ανοίγει η ειδοποίηση |
icon, color | προαιρετικά: αντικαθιστούν το εικονίδιο και το χρώμα της εφαρμογής |
Η τιμή του x-token είναι το token ειδοποίησης που παράγει το OpenPlatform για αυτόν τον χρήστη και την εφαρμογή: το MD5 της διεύθυνσης ειδοποίησης με salt το reqtoken της εφαρμογής και το MD5 αυτού του αποτελέσματος με salt το restoken της (FUNC.makenotify στο definitions/func.js). Και τα δύο μυστικά είναι τα ίδια που μοιράζεται η εφαρμογή για την εκκίνηση (καταχώριση μιας εφαρμογής).
Το OpenPlatform απαντά Invalid token όταν το άθροισμα ελέγχου ή η κεφαλίδα δεν ταιριάζουν και Not allowed notifications όταν ο χρήστης ή η εφαρμογή δεν τις δέχεται. Ελέγχει επίσης τις επιτρεπόμενες διευθύνσεις της εφαρμογής και ότι ο χρήστης είναι επιβεβαιωμένος, ενεργοποιημένος και ενεργός. Όταν όλα είναι σωστά:
- αποθηκεύει την ειδοποίηση (πίνακας
tbl_notification) και αυξάνει τον μετρητή μη αναγνωσμένων του χρήστη· - ενημερώνει τις συνεδρίες αυτού του χρήστη που είναι ανοιχτές στην πύλη, ώστε ο μετρητής να εμφανιστεί αμέσως·
- δημοσιεύει το
Notifications.createμέσω TMS όταν η ρύθμιση$tmsείναι ενεργή· - επιστρέφει το αναγνωριστικό της ειδοποίησης.
Για χρήστες που είναι εκτός σύνδεσης και έχουν μη αναγνωσμένες ειδοποιήσεις, μια εργασία υπηρεσίας στέλνει μια σύνοψη με email ("Unread notifications") όταν οι ρυθμίσεις αλληλογραφίας είναι διαμορφωμένες, το πολύ μία φορά κάθε τρεις ημέρες ανά χρήστη (definitions/init.js).
Το API χρηστών (ένα token)
Το GET /users/ επιστρέφει τις ομάδες και τους χρήστες της πλατφόρμας ως JSON. Είναι απενεργοποιημένο μέχρι να οριστούν οι ρυθμίσεις allow_token και token. Ο καλών στέλνει το token ως παράμετρο ερωτήματος token ή ως κεφαλίδα x-token· οι επαναλαμβανόμενες λανθασμένες προσπάθειες μπλοκάρονται. Οι χρήστες έρχονται χωρίς μυστικά: αναγνωριστικό, αναφορά, γλώσσα, φύλο, φωτογραφία (απόλυτη διεύθυνση), όνομα, email, χρώμα, προτιμήσεις, σημαίες (sa, isdisabled, isinactive, isonline), ημερομηνίες και τα αναγνωριστικά των ομάδων τους.
Μεταφόρτωση εικόνας
Το POST /upload/base64/ (έως 2 MB) δέχεται σώμα JSON με το όνομα αρχείου και το file ως data URI, και μόνο JPEG. Χρειάζεται συνδεδεμένο χρήστη ή το token ερωτήματος της ρύθμισης servicetoken (δείτε ρυθμίσεις και βάση δεδομένων για το από πού προέρχεται αυτό το κλειδί). Η εικόνα αποθηκεύεται στον χώρο αρχείων files και η απάντηση είναι η διεύθυνσή της, /files/<id and checksum>.jpg· η διεύθυνση λειτουργεί μόνο με το άθροισμα ελέγχου.
Πολλά στιγμιότυπα: το socket συγχρονισμού
Το SOCKET /sync/ συνδέει στιγμιότυπα του OpenPlatform. Ένας πελάτης γίνεται δεκτός όταν η ρύθμιση sync είναι ενεργή και το token του ερωτήματος ισούται με το sync_token· κάθε άλλος πελάτης κλείνει με τον κωδικό 4001 μισό δευτερόλεπτο μετά το άνοιγμα. Τα μηνύματα ενός επιβεβαιωμένου πελάτη αναμεταδίδονται στους υπόλοιπους και ενώ ένας επιβεβαιωμένος πελάτης επανασυνδέεται, τα μηνύματα μπαίνουν σε ουρά έως δέκα δευτερόλεπτα.