From cb47680777b3fd3bcd955f9e81ddf45c9b69ecfa Mon Sep 17 00:00:00 2001 From: Kristofer Hallin Date: Fri, 1 Oct 2021 10:21:54 +0200 Subject: * Use py-couchdb. * Other minor fixes and tweaks. --- src/couch/feedreader.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/couch/feedreader.py (limited to 'src/couch/feedreader.py') diff --git a/src/couch/feedreader.py b/src/couch/feedreader.py new file mode 100644 index 0000000..e293932 --- /dev/null +++ b/src/couch/feedreader.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +# Based on py-couchdb (https://github.com/histrio/py-couchdb) + + +class BaseFeedReader(object): + """ + Base interface class for changes feed reader. + """ + + def __call__(self, db): + self.db = db + return self + + def on_message(self, message): + """ + Callback method that is called when change + message is received from couchdb. + + :param message: change object + :returns: None + """ + + raise NotImplementedError() + + def on_close(self): + """ + Callback method that is received when connection + is closed with a server. By default, does nothing. + """ + pass + + def on_heartbeat(self): + """ + Callback method invoked when a hearbeat (empty line) is received + from the _changes stream. Override this to purge the reader's internal + buffers (if any) if it waited too long without receiving anything. + """ + pass + + +class SimpleFeedReader(BaseFeedReader): + """ + Simple feed reader that encapsule any callable in + a valid feed reader interface. + """ + + def __call__(self, db, callback): + self.callback = callback + return super(SimpleFeedReader, self).__call__(db) + + def on_message(self, message): + self.callback(message, db=self.db) -- cgit v1.1