shrlok: prefix message length

master
dece 2 years ago
parent 4d7be3d9d8
commit 9c78abd7f3

@ -62,7 +62,7 @@ class Bot(irc.client.SimpleIRCClient, Logger):
with open(self.config["storage_file"], "wt") as storage_file:
json.dump(self.storage, storage_file, indent=2, sort_keys=True)
self.log_d("Saved storage file.")
except (OSError, json.decoder.JSONEncodeError) as exc:
except OSError as exc:
self.log_e(f"Could not save storage file: {exc}")
def on_welcome(self, connection, event):

@ -4,7 +4,11 @@ from edmond.plugin import Plugin
class ShrlokPlugin(Plugin):
"""Use an available shrlok server to allow sharing longer stuff."""
"""Use an available shrlok server to allow sharing longer stuff.
This plugin does not do anything on its own, but can be used from other
plugins to share longer texts through a Web portal.
"""
def __init__(self, bot):
super().__init__(bot)
@ -22,15 +26,18 @@ class ShrlokPlugin(Plugin):
self.url_root = self.config["url_root"]
self.bot.log_d(f"shrlok socket path '{self.socket}'")
else:
self.bot.log_i("No socket path specified, shrlok plugin disabled.")
self.bot.log_d("No socket path specified, shrlok plugin disabled.")
self.is_ready = False
def post_text(self, content):
try:
with socket.socket(socket.AF_UNIX, socket.SOCKET_STREAM) as sock:
with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
sock.connect(self.socket)
sock.sendall(content.encode())
data = b'{"type":"txt"}\0' + content.encode()
sock.sendall(str(len(data)).encode() + b"\0" + data)
response = sock.recv(4096)
except OSError as exc:
self.bot.log_e(f"Can't write text file: {exc}")
self.bot.log_i("socket replied with: " + response.decode())
self.bot.log_e(f"Can't post text file: {exc}")
return None
url = response.decode().replace(self.file_root, self.url_root, count=1)
return url

Loading…
Cancel
Save