From 6406dfc73594d95037b61f8f953d76d5f90321ae Mon Sep 17 00:00:00 2001 From: Tom Date: Thu, 21 May 2020 10:50:57 -0700 Subject: [PATCH] finished assignment --- __pycache__/bookdb.cpython-38.pyc | Bin 0 -> 1624 bytes bookapp.py | 65 +++++++++++++++++++++++++++--- wsgi_1.py | 13 +++--- 3 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 __pycache__/bookdb.cpython-38.pyc diff --git a/__pycache__/bookdb.cpython-38.pyc b/__pycache__/bookdb.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b588d2389d3c5a746f533824c19e4dc66a81d3b8 GIT binary patch literal 1624 zcma)6&2Aev5Z+z=SaxiuZqqad3Y0k%hyY30mE<3}u3=e9Vg$8gM0NuRY6WUZNrZMu zh1|8Og>y=-J@lSKbL?C6Idtuz?@$zIhm`C(?WGhrJ6z7}%=gWVF4opoELh(j|N6a? zwXEOt;r3dF!y#;S4&tdrEMmWf{l;lq#33n?CK-}_mnKUjN0!No(eIE|vPRa8ewTbi zHps_D|AgElpOX7V|Lk3+ZIcHrE5GT(mp@nzoDN~D&p}WN?5ws!Y~sAN+9@3qo)8y& zv$O1x5ToXiZ-eRe(*7yf4cO{Fh`DcM{cOLtn${cpwS8rSck1*%Za{(6(ryUEz`C-& zd+^$htSdVLmrZ~V+y2q{$$6EA4>+?-#G-(L;xHn0Tu{@5`Oz##aD;nUnah$Zbwa;b zatR)P95(hk7m7;NiBud6I!)onA?1D{YH0aN=a|e^( zT;#w=u7c2+D}A!;teyQUn@ZL`2;ytp*Gua<8NZYBn0a=y$-v zQ1h?AvlWw1m+`*PEvQTkJK4A$+1#GyGqYT`%W+7%-PuaF8wwH!T3_vUU&T0>-xwrv zU5C>pxFrlu-99>mAu?y@vQocEzHSVul+&{*daM)_hyj;-=mj1#f)=HENqeY19tX_F z5rfh-=_L)sSeG+dukGv>y_#Fy^}OBcZu0O9`=bb*#XYFTknsU}bb_TnL=~@q%C5VU zPwus*!6jxK9n&D70}<={eA@I@JIz#&x0lCre=6Hq97Dgz70}GZT6eX1V?O03DcdsKTrDb;mZp LKhsP9Q~UjIonWJ0 literal 0 HcmV?d00001 diff --git a/bookapp.py b/bookapp.py index d2284c6..07fb021 100644 --- a/bookapp.py +++ b/bookapp.py @@ -1,4 +1,5 @@ import re +import traceback from bookdb import BookDB @@ -6,18 +7,70 @@ 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

" + all_books = DB.titles() + body = ['

My Bookshelf

', '
    '] + item_template = '
  • {title}
  • ' + for book in all_books: + body.append(item_template.format(**book)) + body.append('
') + return '\n'.join(body) + + +def resolve_path(path): + funcs = { + '': books, + 'book': book, + } + + path = path.strip('/').split('/') + + func_name = path[0] + args = path[1:] + + try: + func = funcs[func_name] + 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')] + headers = [("Content-type", "text/html")] + 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__': diff --git a/wsgi_1.py b/wsgi_1.py index 85498d1..3b588ca 100644 --- a/wsgi_1.py +++ b/wsgi_1.py @@ -1,5 +1,6 @@ #!/usr/bin/env python import datetime +import os default = "No Value Set" @@ -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_INFO', 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' @@ -40,3 +41,5 @@ def application(environ, start_response): from wsgiref.simple_server import make_server srv = make_server('localhost', 8080, application) srv.serve_forever() + +