Browse Source

POST

develop 1.0
Olli Graf 4 days ago
parent
commit
7478e0fc78
  1. 61
      rest_chat_server/chat_server.py
  2. 9
      rest_chat_server/log_config.json
  3. 1
      rest_chat_server/pyproject.toml
  4. 27
      rest_chat_server/uv.lock

61
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')

9
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",

1
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",
]

27
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" },
]

Loading…
Cancel
Save