diff --git a/__pycache__/bookdb.cpython-37.pyc b/__pycache__/bookdb.cpython-37.pyc
new file mode 100644
index 0000000..81dc616
Binary files /dev/null and b/__pycache__/bookdb.cpython-37.pyc differ
diff --git a/bookapp.py b/bookapp.py
index d2284c6..76f0591 100644
--- a/bookapp.py
+++ b/bookapp.py
@@ -1,4 +1,5 @@
import re
+import traceback
from bookdb import BookDB
@@ -6,19 +7,67 @@
def book(book_id):
- return "
a book with id %s
" % book_id
-
+ page = """
+{title}
+
+ | Author | {author} |
+ | Publisher | {publisher} |
+ | ISBN | {isbn} |
+
+Back to the list
+"""
+ book = DB.title_info(book_id)
+ if book is None:
+ raise NameError
+ return page.format(**book)
def books():
- return "a list of books
"
+ book_list = DB.titles()
+ body = ['My Bookshelf
', '']
+ title = '- {title}
'
+ for book in book_list:
+ body.append(title.format(**book))
+ body.append('
')
+ return '\n'.join(body)
+
+def resolve_path(path):
+ funcs = {'': books, 'book': book}
+ path = path.strip('/').split('/')
+ args = path[1:]
+
+ try:
+ func = funcs[path[0]]
+ except KeyError:
+ raise NameError
+ return func, args
def application(environ, start_response):
status = "200 OK"
headers = [('Content-type', 'text/html')]
- start_response(status, headers)
- return ["No Progress Yet
".encode('utf8')]
+ # Try/except block to determine what the body and status will be
+ try:
+ path = environ.get('PATH_INFO', None)
+ if path is None:
+ raise NameError
+ func, args = resolve_path(path)
+ body = func(*args)
+ status = "200 OK"
+
+ except NameError:
+ status = "404 Not Found"
+ body = "Not Found
"
+
+ except Exception:
+ status = "500 Internal Server Error"
+ body = "Internal Server Error
"
+ print(traceback.format_exc())
+
+ finally:
+ headers.append(('Content-length', str(len(body))))
+ start_response(status, headers)
+ return [body.encode('utf8')]
if __name__ == '__main__':
from wsgiref.simple_server import make_server
diff --git a/wsgi_1.py b/wsgi_1.py
index 85498d1..ebf74de 100644
--- a/wsgi_1.py
+++ b/wsgi_1.py
@@ -1,3 +1,4 @@
+#!C:\Users\steve\AppData\Local\Programs\Python\Python37\python.exe
#!/usr/bin/env python
import datetime
@@ -21,11 +22,11 @@ def application(environ, start_response):
response_body = body.format(
software=environ.get('SERVER_SOFTWARE', default),
- path="aaaa",
- month="bbbb",
- date="cccc",
- year="dddd",
- client_ip="eeee"
+ path=environ.get('PATH', default),
+ month=datetime.datetime.now().strftime('%B'),
+ date=datetime.datetime.now().day,
+ year=datetime.datetime.now().year,
+ client_ip=environ.get('REMOTE_ADDR', default),
)
status = '200 OK'