move app to scopes.server; rename / clean-up

This commit is contained in:
Helmut Merz 2024-02-21 22:45:54 +01:00
parent 265048e76a
commit 2986d426bb
7 changed files with 54 additions and 19 deletions

View file

@ -1,8 +0,0 @@
# py-scopes/demo/app.py
def demo_app(environ, start_response):
status = '200 OK'
headers = [("Content-type", "text/plain; charset=utf-8")]
start_response(status, headers)
return ['Hello World'.encode()]

View file

@ -2,8 +2,10 @@
from dotenv import load_dotenv
from os import getenv
from scopes.server.app import demo_app, zope_app
load_dotenv()
server_port = getenv('SERVER_PORT', '8999')
app = zope_app

View file

@ -1,4 +1,4 @@
# py-scopes/demo/server.py
# py-scopes/demo/demo_server.py
from wsgiref.simple_server import make_server
@ -10,3 +10,9 @@ def run(app, config):
httpd.serve_forever()
except KeyboardInterrupt:
print('Shutting down.')
if __name__ == '__main__':
import config
run(config.app, config)

View file

@ -1,9 +0,0 @@
# py-scopes/demo/main.py
import config
from app import demo_app
import server
server.run(demo_app, config)

View file

@ -19,7 +19,7 @@ dependencies = [
]
[project.optional-dependencies]
demo = ["python-dotenv"]
demo = ["python-dotenv", "zope.publisher"]
test = ["pytest"]
[tool.setuptools]

View file

@ -0,0 +1 @@
"""package scopes.server"""

43
scopes/server/app.py Normal file
View file

@ -0,0 +1,43 @@
# scopes.server.app
from zope.publisher.base import DefaultPublication
from zope.publisher.browser import BrowserRequest
from zope.publisher.publish import publish
def demo_app(environ, start_response):
print(f'*** environ {environ}.')
status = '200 OK'
headers = [("Content-type", "text/plain; charset=utf-8")]
start_response(status, headers)
return ['Hello World'.encode()]
def zope_app(environ, start_response):
request = BrowserRequest(environ['wsgi.input'], environ)
request.setPublication(DefaultPublication(AppRoot()))
request = publish(request, False)
response = request.response
start_response(response.getStatusString(), response.getHeaders())
return response.consumeBodyIter()
class AppRoot:
"""Zope Demo AppRoot"""
def __call__(self):
"""calling AppRoot"""
return 'At root'
def __getitem__(self, key):
def child():
"""get child"""
print(f'--- getitem {key}')
return 'getitem'
return child
def hello(self):
"""method hello"""
return 'Hello AppRoot'