====== Data Abstraction Layer ======
Der dal bietet Services um Daten aus der Datenbank (aktuell MongoDB) zu lesen, oder Daten (new/changed/deleted) in der Datenbank und in den search engines zu aktuallisieren.
===== Anfragen stellen allgemein =====
Anfragen werden via POST an den dal-Server gesendet. Mittels ''%%service=<…>%%'' werden die gewünschten services ausgewählt. Es ist möglich mehrere Services mit einer Anfrage aufzurufen. Diese werden sequentiell abgearbeitet. Je nach Service sind weitere Informationen zu übermitteln.
===== Services =====
Allgemein werden Anfragen mit
service= {weitere Parameter}
gestellt und Antworten in der Form
{"duration": , "": {}}
**hello**
service=hello
, wenn der Dienst läuft antwortet er mit:
{"duration": , "hello": "at your service"}
**getShopList** Antwortet mit einer Listen von allen ShopIds, die existieren.
service=getShopList
{"getShopIds": [1,2,...]}
**getShopInfo** Antwortet mit allen Infos die über den Shop zur Verfügung stehen. {{/dokuwiki/lib/images/smileys/fixme.gif|FIXME}} url etc.in der Antwort
service=getShopInfo shopId=
{"duration": 0.09932303428649902, "getShopInfo": {"lastUpdate": "2015-04-29 12:55:12.882000", "currency": "EUR", "shopId": "stest2", "productCount": 25, "visible": true, "coundryCode": "DE", "active": true, "rejectedCount": 2}}
**getFeedInfo** Antwortet mit zwei Listen, in denen alle ''%%imgIds%%'' und alle ''%%hash%%''es von Produkten dieses Kunden aufgeführt sind.
service=getFeedInfo shopId=
{"duration": 0.10866522789001465, "getFeedInfo": {: , ...}}
**cancelShopUpdate** Bricht ein Update eines Shops ab
service=cancelShopUpdate shopId=
{"cancelShopUpdate": {"ack": True}}
**shopUpdatePush** Erlaubt es Felder in den Infos eines Shops zu ändern
service=shopUpdatePush shopId= fields={name1: value1}
{"shopUpdatePush": {"ack": True}}
**startNewShopUpdate** Anmelden eines shopUpdates, Antwortet mit einer updateId oder einer Meldung falls noch ein Update für den Shop in der Query liegt
service=startNewShopUpdate shopId=
{"duration": 0.04, "startNewShopUpdate": {"updateId": }} oder
{"duration": 0.04, "startNewShopUpdate": {"error": }}
**shopUpdateDone** Hinweis das der Parser fertig ist.
service=shopUpdateDone updateId= new= changed= removed=
{"duration": 0.0, "shopUpdateDone": {"ack": true}}
**getPendingImages** Gibt ein Dictionary {id→imgurl} von alle Produkten eines Shops zurück, die **nicht** aktiv sind.
service=getPendingImages shopId=
{"getPendingImages" : {"id1": "http://foo.de/bild.jpg, ..}}
**workload** Ergebnisse vom Parsen übermitteln {{/dokuwiki/lib/images/smileys/fixme.gif|FIXME}} Felder noch definieren
service=workload action={new,changed,remove} updateId= [item=]
{"duration": 0.0, "workload": {"ack": true, "n": }}
: imgId + metaData
: imgId
**removeImg** Löscht Bilder
service=removeImg shopId= [item=]
{"duration": 0.0, "removeImg": {"ack": true, "deleted": }}
**newShopImg** Berechnet das enrichment und übernimmt das Bild ins System
service=newShopImg shopId= [item=]
{"duration": 0.0, "newShopImg": {"rejected": , "added": }}
**changeImgMeta** Ändert die hinterlegten MetaDaten zum Bild
service=changeImgMeta shopId= [item=]
{"duration": 0.0, "changeImgMeta": {"ack": true}}
**removeShop** Löscht alle Bilder von diesem Shop aus der ''%%shop_images%%''
?? tbd