From 7478e0fc783afa2ac34b4b7e6081ce6cd2e35dce Mon Sep 17 00:00:00 2001 From: Olli Graf Date: Fri, 30 May 2025 10:55:38 +0200 Subject: [PATCH] POST --- rest_chat_server/chat_server.py | 61 +++++++++++++++++++++++++++++--- rest_chat_server/log_config.json | 9 +---- rest_chat_server/pyproject.toml | 1 + rest_chat_server/uv.lock | 27 +++++++++++++- 4 files changed, 85 insertions(+), 13 deletions(-) diff --git a/rest_chat_server/chat_server.py b/rest_chat_server/chat_server.py index f591360..df489fa 100644 --- a/rest_chat_server/chat_server.py +++ b/rest_chat_server/chat_server.py @@ -1,5 +1,6 @@ import falcon, json import logging +from logging import config from datetime import datetime @@ -11,20 +12,72 @@ class Message: self.text = text self.created = datetime.now() -class ChatServert(object): + + def __str__(self): + return self.text + +class ChatServer(object): def __init__(self): - self.lastmessage = 'Chat Server bereit.') + self.msglist = {} + initmsg = Message('system','Chat Server bereit') + + self.addMsg(initmsg) + + def addMsg(self,msg): + created = datetime.now() + self.msglist[created.strftime('%d.%m.%y %H:%M.%f')] = msg def on_get(self,req,resp): - pass + logging.debug('on_get()') + + logging.debug(f'msglist= {self.msglist}') + json_msgs = {} + + for key in self.msglist: + text = self.msglist[key].text + json_msgs[key] = { + 'key': key, + 'user': self.msglist[key].user, + 'text': text + } + + resp.status = falcon.HTTP_OK + resp.media = json_msgs def on_post(self,req,resp): - pass + logging.debug('on_post()') + + json_string = req.media + + logging.debug(f'json_string={json_string}') + + msg = Message(json_string['user'],json_string['text']) + self.addMsg(msg) + + + resp.status = falcon.HTTP_OK def on_delete(self,req,resp): + logging.debug('on_delete()') + + +def create_chat_resource(): + chat_endpoint = ChatServer() + + logging.debug(f'endpoint={chat_endpoint}') + + return chat_endpoint + + +application = falcon.App() +with open('log_config.json') as file_config: + config.dictConfig(json.load(file_config)) +resource = create_chat_resource() +application.add_route('/msg', resource) +logging.debug('Chat REST Service bereit') diff --git a/rest_chat_server/log_config.json b/rest_chat_server/log_config.json index 0ec5451..1badbf1 100644 --- a/rest_chat_server/log_config.json +++ b/rest_chat_server/log_config.json @@ -1,11 +1,5 @@ { "version":1, - "filters": { - "drucker":{ - "()": "__main__.DruckFilter", - "params": "noshow" - } - }, "formatters":{ "std_out":{ "format": "%(asctime)s : %(levelname)s : %(module)s : %(funcName)s : %(lineno)d : (Process Details : (%(process)d, %(processName)s), Thread Details : (%(thread)d, %(threadName)s))\nLog : %(message)s", @@ -16,8 +10,7 @@ "console":{ "formatter": "std_out", "class": "logging.StreamHandler", - "level": "DEBUG", - "filters": ["drucker"] + "level": "DEBUG" }, "file":{ "formatter":"std_out", diff --git a/rest_chat_server/pyproject.toml b/rest_chat_server/pyproject.toml index 2fee08a..eafc3fc 100644 --- a/rest_chat_server/pyproject.toml +++ b/rest_chat_server/pyproject.toml @@ -6,4 +6,5 @@ readme = "README.md" requires-python = ">=3.9" dependencies = [ "falcon>=4.0.2", + "gunicorn>=23.0.0", ] diff --git a/rest_chat_server/uv.lock b/rest_chat_server/uv.lock index 9d5aa7f..0c574db 100644 --- a/rest_chat_server/uv.lock +++ b/rest_chat_server/uv.lock @@ -50,13 +50,38 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/e2/ef821224a9ca9d4bb81d6e7ba60c6fbf3eae2e0dc10d806e6ff21b6dfdc5/falcon-4.0.2-py3-none-any.whl", hash = "sha256:077b2abf001940c6128c9b5872ae8147fe13f6ca333f928d8045d7601a5e847e", size = 318356 }, ] +[[package]] +name = "gunicorn" +version = "23.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029 }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, +] + [[package]] name = "rest-chat-server" version = "0.0.1" source = { virtual = "." } dependencies = [ { name = "falcon" }, + { name = "gunicorn" }, ] [package.metadata] -requires-dist = [{ name = "falcon", specifier = ">=4.0.2" }] +requires-dist = [ + { name = "falcon", specifier = ">=4.0.2" }, + { name = "gunicorn", specifier = ">=23.0.0" }, +]