From 33dbd8701e19981d78dbf524ff7520b46fb14431 Mon Sep 17 00:00:00 2001 From: bplanica Date: Sun, 9 Aug 2020 12:08:00 -0500 Subject: [PATCH] wsgi activity --- __pycache__/bookdb.cpython-38.pyc | Bin 0 -> 1605 bytes bookapp.py | 65 +++++++++++++++++++++++++++--- wsgi_1.py | 11 ++--- 3 files changed, 65 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..4fb3ecc8d93fde085424ddad9d1ddb2f11b74fc9 GIT binary patch literal 1605 zcma)6O>f&q5G5&zmL1!vlQfNi0^J+}M1UoblKdgpbt6kj+@N-h$Uy+X1+n6;q=m>` zWtXxl!Z{_^9(vEAIrcB<+C%?CQJ|e&+NslCy21`;xig%3Z)WszWo5~N_3Z;Ma9qp! zO&_kWML0ZytxiEawTMORcd*|&U5hv*NAjdV-1m91K#F9MEE)X0hnDB(S;Ooxa z10hE3gU|-ktEK&Ouv@UzT@aaXV*O%&u-evJ`;C2JgLm%uKW;#Q)zNMU#K5|+ez^C> zPOJ+%0he`v58M99`Pq4$hYvXOLc)@Wg5oeDbzD&MgoVkxNN|FCSeeU;Cv`%Ki z=F*i}3VO|UZj$;}G^Q9n&1(`%zUk-xT6C7nX28mqN;WXdZgu$tMMTam%7VV-d z^_%pY){sg$JDH)!N>QFL;Bptez+*;GRv7e(_E2*?j#!8jCOB%-a~g?p4A$vtV|%CU zH@y0e@9)%i()%Yk93|*v(t~OY86TjBM_7hKRP#4b)$_JX>7C9jI>(HoLmEYNASU|0 zlsApk%`?^G-NkX{Pi5D|6X+P39$Y5V7ZP0*xDM|!7g@7aUJsVMk zQ42a}0u6>bA=9|jWwPF8)!(jeHnuj?trm`Zl92&LFF8A>Qn6%)P9#<8YvdzJn8ACA zz~3?m8m07R6B6g>pn}?B%IPdEJrNTQtq<%dB>Gpx9n)kg$vRA2i2Vyy`#k+BBqb4^poh(tNL!Ep_^mG y*P^OLO^dn~n|l6qXPdu(YeQgWLQlfHxR(vkz8Qx)yjop#Z1ejwzwke`-~R@6ADest literal 0 HcmV?d00001 diff --git a/bookapp.py b/bookapp.py index d2284c6..ac42260 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..b37b78a 100644 --- a/wsgi_1.py +++ b/wsgi_1.py @@ -1,4 +1,5 @@ #!/usr/bin/env python + import datetime 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'