====== Feed Downloader ====== {{/dokuwiki/lib/images/smileys/fixme.gif|FIXME}} das ist noch ein Schmierzettel für Gedanken **Verwendete Komponenten**: * FeedCache * Dirigent (optional) * Messaging (optional) **Übersicht**: Komponente zum Download von Feeds anhand der Feed-ID. Idee: * prüft, ob ein erneuter Download nötig ist (zeitlicher Cooldown, Checksums, etc.) * Wenn ein Download nötig ist, wird der Download über den Feed-Cache angestoßen * betreibt Error-Handling * nach erfolgreichem Abschluss, kann sich die nächste Komponente den Feed (Bytestrom) vom Feed-Cache abholen **Errors**: * feed not found * feed not changed within time period (config) * multiple files in zip * feed empty * feed too large (config) * permission denied * uri missing * login failed * download still running * broken pipe **API**: * start_download(feed_id, force_download=False, uri=None, callback=None) → ACK * Async-API zum Starten des Feed-Downloads. Bei Fertigstellung wird eine Nachricht an “callback” geschickt * force_download, ermöglicht eine aktuelle Version des Feeds herunter zu laden, obwohl noch nicht alle Bedingungen für einen neuen Download erfüllt sind * uri, erlaubt das Überschreiben der uri, ansonsten wird die uri aus dem config_server übernommen * callback ist zum Überschreiben des callbacks, der aufgerufen wird, wenn der download beendet wurde. * status_download(feed_id) * ermöglicht den aktuellen Zustand des Downloads zu überprüfen: (Beispiele: {state: “finished”, date: “2016-04-12T16:09:23Z” (iso-8601), checksum: “23ac…” (md5)}, {state: “in_progress”, bytes: 1234, size: 12345, start_date: “2016-04-12T16:09:23Z”, duration: 0.23}, {state: “failed”, error_message: “…”} * cancel_download(feed_id) * Beendet den aktuellen Download für die feed_id und ermöglicht so das erneute herunterladen des feeds * get_feed(feed_id, force_download=False, uri=None, history=None) → byte strom * Sync-API, die den Byte Strom zurückliefert, sobald der Download erfolgreich abgeschlossen wurde. * get_feed_history(feed_id) (sollte vermutlich in den FeedCache wandern) * zeigt an, welche Feed Versionen im FeedCache vorhanden sind **Zustände**, die ein Download haben kann: * finished * date: in ISO-8601 Format * checksum (optional): die MD5-Summe des heruntergeladenen Feeds * feed_id: string * in_progress * start_date: in ISO-8601 Format * duration: float, Sekunden seit Beginn * bytes: int, Anzahl der Bytes, die bereits heruntergeladen wurden * size (optional): die Anzahl der Bytes, die heruntergeladen werden muss, falls bekannt * feed_id: string * failed * error_message: string * feed_id: string **Config**: * feed_cache * messaging (optional) * dirigent/callback (optional) * location (feed specific) * history (feed specific)