changeset 1708:3cfd3693a4ac

quick fixes for cyclone sse
author drewp@bigasterisk.com
date Wed, 17 Nov 2021 14:25:14 -0800
parents 4a6fffe6a994
children 4e33b979c3fc
files service/environment/environment.py service/environment/patch_cyclone.py service/environment/requirements.txt
diffstat 3 files changed, 28 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/service/environment/environment.py	Sat Oct 23 13:23:02 2021 -0700
+++ b/service/environment/environment.py	Wed Nov 17 14:25:14 2021 -0800
@@ -15,8 +15,9 @@
 from patchablegraph import PatchableGraph, CycloneGraphEventsHandler, CycloneGraphHandler
 from twilight import isWithinTwilight
 from standardservice.logsetup import log, verboseLogging
-
+from patch_cyclone import patch_sse
 from rdfdoc import Doc
+patch_sse()
 
 ROOM = Namespace("http://projects.bigasterisk.com/room/")
 DEV = Namespace("http://projects.bigasterisk.com/device/")
@@ -27,7 +28,7 @@
 
 class CycloneGraphEventsHandlerWithCors(CycloneGraphEventsHandler):
     def flush(self):
-        self.set_header("Access-Control-Allow-Origin", "*")
+        self.set_header(b"Access-Control-Allow-Origin", b"*")
         return CycloneGraphEventsHandler.flush(self)
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/service/environment/patch_cyclone.py	Wed Nov 17 14:25:14 2021 -0800
@@ -0,0 +1,20 @@
+
+
+def patch_sse():
+    from cyclone import escape
+    import cyclone.sse
+    def new_sendEvent(self, message, event=None, eid=None, retry=None):
+        if isinstance(message, dict):
+            message = escape.json_encode(message)
+        if isinstance(message, str):
+            message = message.encode("utf-8")
+        assert isinstance(message, bytes)
+        if eid:
+            self.transport.write(b"id: " + eid.encode("utf-8") + b"\n")
+        if event:
+            self.transport.write(b"event: " + event + b"\n")
+        if retry:
+            self.transport.write(b"retry: " + retry.encode("utf-8") + b"\n")
+        self.transport.write(b"data: " + message + b"\n\n")
+
+    cyclone.sse.SSEHandler.sendEvent = new_sendEvent
--- a/service/environment/requirements.txt	Sat Oct 23 13:23:02 2021 -0700
+++ b/service/environment/requirements.txt	Wed Nov 17 14:25:14 2021 -0800
@@ -1,15 +1,16 @@
-cyclone
+cyclone==1.3
 docopt
 ipdb
 service_identity
 twisted
+python-dateutil
 
-git+http://github.com/drewp/rdflib-jsonld.git@0a560c9f1aa7c7bbb80fea389e1f5fa51d1287f8#egg=rdflib_jsonld
+# git+http://github.com/drewp/rdflib-jsonld.git@0a560c9f1aa7c7bbb80fea389e1f5fa51d1287f8#egg=rdflib_jsonld
 
-git+http://github.com/drewp/scales.git@448d59fb491b7631877528e7695a93553bfaaa93#egg=scales
+# git+http://github.com/drewp/scales.git@448d59fb491b7631877528e7695a93553bfaaa93#egg=scales
 
 cycloneerr
-patchablegraph==0.11.0
+patchablegraph==0.12.0
 rdfdb==0.21.0
 standardservice==0.6.0