Skip to content

Synchronization API

Florian D edited this page Mar 22, 2015 · 1 revision

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

Benutzeranmeldung und registrierung:

/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

Synchronisierung

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

Clone this wiki locally