Available backends
==================

Local watcher
-------------
.. automodule:: pytroll_watchers.local_watcher
   :members:

Minio bucket notification watcher
---------------------------------
.. automodule:: pytroll_watchers.minio_notification_watcher
   :members:

Copernicus dataspace watcher
----------------------------
.. automodule:: pytroll_watchers.dataspace_watcher
   :members:

EUMETSAT datastore watcher
--------------------------
.. automodule:: pytroll_watchers.datastore_watcher
   :members:

DHuS watcher
------------
.. automodule:: pytroll_watchers.dhus_watcher
   :members:

Adding a new backend
--------------------
The base concept of the pytroll watchers library is very simply the publishing of file events. In order to add a new backend, two things need to be done:

1. Implement a generator that iterates over filesystem events and generates a pair of (file item, file metadata). The file item is the the (U)Path object to the file (check out universal_pathlib). The file metadata is a dictionary that contains the metadata of the file. It can be formatted in the same fashion as the message config. If it does not contain a `data` key, it is expected to be the contents of the data key itself (ie `subject` and `atype` will not be used as message parameters, but rather as `data` items).

2. Add an entry point to the new backend module. This module is expected to implement a `file_publisher` that just takes the config dictionary as argument.
