Известия и публичните крайни точки на OpenPlatform
Освен стартирането и проверката, OpenPlatform има няколко крайни точки за приложенията и за други системи. Те са в 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 е токенът за известия, който OpenPlatform извежда за този потребител и приложение: MD5 на адреса за известия със сол reqtoken на приложението и MD5 на този резултат със сол неговия restoken (FUNC.makenotify в definitions/func.js). И двете тайни са същите, които приложението споделя за стартирането (регистриране на приложение).
OpenPlatform отговаря Invalid token, когато контролната сума или заглавката не съвпадат, и Not allowed notifications, когато потребителят или приложението не ги приема. Проверява също разрешените адреси на приложението и че потребителят е потвърден, разрешен и активен. Когато всичко е наред:
- съхранява известието (таблица
tbl_notification) и увеличава брояча на непрочетените на потребителя; - обновява сесиите на този потребител, отворени в портала, така че броячът се появява веднага;
- публикува
Notifications.createчрез TMS, когато настройката$tmsе включена; - връща идентификатора на известието.
За потребители, които са офлайн и имат непрочетени известия, служебна задача изпраща обобщение по имейл ("Unread notifications"), когато настройките за поща са конфигурирани, най-много веднъж на три дни за потребител (definitions/init.js).
API за потребители (токен)
GET /users/ връща групите и потребителите на платформата като JSON. То е изключено, докато не бъдат зададени настройките allow_token и token. Извикващият изпраща токена като параметър на заявката token или като заглавка x-token; повторените грешни опити се блокират. Потребителите идват без тайни: идентификатор, препратка, език, пол, снимка (абсолютен адрес), име, имейл, цвят, предпочитания, флагове (sa, isdisabled, isinactive, isonline), дати и идентификаторите на техните групи.
Качване на изображение
POST /upload/base64/ (до 2 MB) приема JSON тяло с името на файла и file като data URI, и само JPEG. Изисква влязъл потребител или токена на заявката от настройката servicetoken (вижте настройки и база данни откъде идва този ключ). Изображението се съхранява във файловото хранилище files, а отговорът е неговият адрес, /files/<id and checksum>.jpg; адресът работи само с контролната сума.
Няколко инстанции: синхронизиращият сокет
SOCKET /sync/ свързва инстанции на OpenPlatform. Клиент се приема, когато настройката sync е включена и token в заявката е равен на sync_token; всеки друг клиент се затваря с код 4001 половин секунда след отварянето. Съобщенията на потвърден клиент се препращат на останалите, а докато потвърден клиент се свързва отново, съобщенията се нареждат на опашка до десет секунди.