-
Notifications
You must be signed in to change notification settings - Fork 0
Synchronization API
Grundlegender Kochbuch syncro Aufbau:
Anmeldung per Syncro Token: z.B. T234DFJKL285D (Zahlen und Großbuchstaben)
Server zählt eine Versions Variable bei jeder Änderung hoch. Bei jedem Rezept ist gespeichert bei welcher Version es zuletzt bearbeitet wurde.
Clients merken sich die Version beim letzten Serverkontakt. Der Server kann dann genau die Rezepte ausliefern, die sich seit dem letzten Mal verändert haben.
Nötige Client Syncro Daten: (speichert der Client zusätzlich)
- Login Token
- Letzte bekannte Server Version
-
UID für jedes Rezept(vom Server zugewiesen) -
Welche Rezepte wurden verändert -
Welche Rezepte wurden gelöscht -
Selbes für Kategorien
Server URL: https://kb.mal-was-anderes.de/
Für Debugging: https://kb-debug.mal-was-anderes.de/
WICHTIG: Überprüfen ob das Zertifikat von der Flose CA unterschrieben wurde
/users/loginToken POST data[User][token]=syncro token
result:
{"loggedIn":false}
{"loggedIn":true,"onlyThumbs":true,"maxImagePixels":"1048576","days_left":"700", "lastLogin":"2015-03-21 15:34:32","user_id":"1"}
Wichtige attribute:
-
loggedIn: login erfolgreich -
onlyThumbs, maxImagePixels: wenn nur thumbnails erlaubt sind, dann ist hier die maximale Anzahl an Pixel angegeben -
days_left: Tage die syncro noch läuft
/users/register POST data[User][email]=email to register, data[User][agb]=1
result
{"registered": false, "errorCode":}
{"registered": true, "token":"syncroLoginToken"}
Attribute:
-
registered: Wenn registrierung erfolgreich war -
errorCode:-
1: ungültige Email -
2: Email bereits registriert -
3: agb nicht akzeptiert
-
/users/logout
Für alle folgenden Aufrufe ist eine Anmeldung nötig, ansonsten HTTP 403 Forbidden
/syncs/changed/{version}
Lädt alle Rezepte, Kategorien, Kategorienreihenfolge, Bildernamen die seit {version} hinzugefügt, verändert oder gelöscht wurden
Wenn nichts geändert: HTTP 304 Not Modified
ansonsten: Datenformat server
/syncs/update/{oldVersion} POST xml=rezeptXmlData
-
oldVersion: aktuelle Sync Version des clients, wenn diese nicht aktuell ist muss zuerst changed aufgerufen werden(siehe Result)
-
oldVersion: refetch, Abruf der Ergebnisse bei kurzzeitig abgebrochener Verbindung TODO
Lädt alle/teil Rezepte, Kategorien, Bilder mit Änderungen hoch, Anzahl kann clientseitig auf 100 Rezepte Begrenzt werden für eine schnellere Verarbeitung
Server setzt bei allen neuen, geänderten und gelöschten Rezepten, Kategorien und Bildern die Version auf die aktuelle Version
Bilddateien werden nicht hier sondern mit gesonderten Requests hochgeladen
Result:
{"newVersion": "60"}
{"current_version":"40", "kategorien": {kategorieKey: kategorieUID,...}, "rezepte": {rezeptKey: rezeptUID,...}
Attribute:
-
newVersion: der Server kennt eine neuere Version -> changed -
current_version: update war erfolgreich, die aktuelle Version ist jetzt current_version -
kategorienKey: kategorieUID, UID die der Server den neuen Kategorien zugewiesen hat -
rezepteKey: rezepteUID, UID die der Server den neuen Rezepten zugewiesen hat
Optional mit gzip: Keine POST variable verwenden sondern gzip komprimierten Daten direkt senden
/syncs/uploadPicture uid POST file=bilddatei {size=original,thumb width=inpx height =inpx}
TODO
/syncs/downloadPicture/{size=(original,thumb)}/{width=inpx height =inpx}/filename
Downloads original or thumbnail picture
TODO