Table of Contents

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=<service> {weitere Parameter}

gestellt und Antworten in der Form

{"duration": <duration for request in seconds>, "<service>": {<answer>}}

hello

service=hello

, wenn der Dienst läuft antwortet er mit:

{"duration": <deltaT>, "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. FIXME url etc.in der Antwort

service=getShopInfo shopId=<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 hashes von Produkten dieses Kunden aufgeführt sind.

service=getFeedInfo shopId=<shopId>
{"duration": 0.10866522789001465, "getFeedInfo": {<imgId>: <hash>, ...}}

cancelShopUpdate Bricht ein Update eines Shops ab

service=cancelShopUpdate shopId=<shopId>
{"cancelShopUpdate": {"ack": True}}

shopUpdatePush Erlaubt es Felder in den Infos eines Shops zu ändern

service=shopUpdatePush shopId=<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=<shopId>
{"duration": 0.04, "startNewShopUpdate": {"updateId": <updateId>}} oder
{"duration": 0.04, "startNewShopUpdate": {"error": <message>}}

shopUpdateDone Hinweis das der Parser fertig ist.

service=shopUpdateDone updateId=<updateId> new=<count new> changed=<count changed> removed=<count 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=<shopId>
{"getPendingImages" : {"id1": "http://foo.de/bild.jpg, ..}} 

workload Ergebnisse vom Parsen übermitteln FIXME <info> Felder noch definieren

service=workload action={new,changed,remove} updateId=<updateId> [item=<info>]
{"duration": 0.0, "workload": {"ack": true, "n": <int>}}

<info for new/changed>: imgId + metaData
<info for removed>: imgId

removeImg Löscht Bilder

service=removeImg shopId=<shopId> [item=<imgId>]
{"duration": 0.0, "removeImg": {"ack": true, "deleted": <int>}}

newShopImg Berechnet das enrichment und übernimmt das Bild ins System

service=newShopImg shopId=<shopId> [item=<info>]
{"duration": 0.0, "newShopImg": {"rejected": <int>, "added": <int>}}

changeImgMeta Ändert die hinterlegten MetaDaten zum Bild

service=changeImgMeta shopId=<shopId> [item=<info>]
{"duration": 0.0, "changeImgMeta": {"ack": true}}

removeShop Löscht alle Bilder von diesem Shop aus der shop_images

?? tbd