====== 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