From 7976df2244436a6ced857b0ec6e9d5ec5b7b5c1e Mon Sep 17 00:00:00 2001 From: KRTstudent <51278428+KRTstudent@users.noreply.github.com> Date: Sun, 19 Apr 2020 17:07:51 -0700 Subject: [PATCH] Completed WSGI activity --- __pycache__/bookdb.cpython-37.pyc | Bin 0 -> 1574 bytes bookapp.py | 67 +++++++++++++++++++++++++++--- wsgi_1.py | 10 ++--- 3 files changed, 66 insertions(+), 11 deletions(-) create mode 100644 __pycache__/bookdb.cpython-37.pyc diff --git a/__pycache__/bookdb.cpython-37.pyc b/__pycache__/bookdb.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed4f888dd9a4387cb2cc0f3081494626267cde65 GIT binary patch literal 1574 zcmaJ=OK%%D5Z+xqB0IKIr)e4k1Sb!z$O7cUlYebe38$sh3v4a4DT7go%z0*Iapp^bYPACzWmk8JI+7m z<$5iE@&vXz199jOhqxbLzxUb>@koYbNsi<%v*ZpbkOi`6^}A$=ERz+h-y>g&+-RC zj9Lew3#Min-wf;~Z1oVt+)q1yx*wgE^WJ^uUbx_yIsVKAAUmhV1%Vhi7tSw_-nrVj za5b2(0c6u{K=aA{6q}ORiSgC4fq6Vzf16-t69#20l?nO-LP{iZ?9Q;L@ zaCs+vJV#!(nW*w!BtjgieNe8gi=H$Nv+RgYl}S+1s6Wfk9c)H(Q2-;k1j6L1vLGDq zzLze479ccX%`&I4u?!n8!|ess=%WYJxX0H~GXttYzY7+Yg#QJcE!sS~jQ53UFbm6Z z)79Hi?d@?fH!F0z9LKcVoh^2|u^>rg^rde1ZGxlujYS|=OgKaKEn)GQ1~I8ydCC53^?3Huke@=bTZXL!Oe=6rD(_)Q>1YlrW3; z3PG@C5!8$6y#^%C(Lout#DvpnT6`uF4t)>oC?xvV#2r&T5po276a$Il80fentXB0a zRo}1fq(3yq^LUm2;6r7-^ z^OVz7Qx?AjC`-V3eY;dmmtVf3EQ+S+1>nMIsS(lN5Y$FP71#!9aE_tu=aj2Z0>2xm zh0mb}8Y+YaNvmf=3OMi}29)6qA}V*$Gbv*9TqF{hh%q;Xc!3o#Kga4<{9r5Cs#I!e zxj_h1f|uS<6;Z>q=mXcl8jjHV%TNmgy6SJBpk4=_*BYEiIzdMXzscupC}OONxpsz; vz=(LfY?}Eqooz?|))3g4Fq1GV?9B&g-;TpNd|FxYT=V2JUq1f@Q;V1n literal 0 HcmV?d00001 diff --git a/bookapp.py b/bookapp.py index d2284c6..e5059db 100644 --- a/bookapp.py +++ b/bookapp.py @@ -1,4 +1,5 @@ import re +import traceback from bookdb import BookDB @@ -6,18 +7,72 @@ 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" + #status = "200 OK" headers = [('Content-type', 'text/html')] - start_response(status, headers) - return ["

No Progress Yet

".encode('utf8')] + 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..7805314 100644 --- a/wsgi_1.py +++ b/wsgi_1.py @@ -21,11 +21,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'