From 98c32f33b0ae7fa56b98f7c6e33cd17bae06b836 Mon Sep 17 00:00:00 2001 From: Clemente Fortuna Date: Thu, 18 Jun 2020 14:53:58 -0400 Subject: [PATCH] L04 activity submission --- __pycache__/bookdb.cpython-37.pyc | Bin 0 -> 1581 bytes bookapp.py | 70 +++++++++++++++++++++++++++--- wsgi_1.py | 12 ++--- 3 files changed, 70 insertions(+), 12 deletions(-) create mode 100644 __pycache__/bookdb.cpython-37.pyc mode change 100644 => 100755 wsgi_1.py diff --git a/__pycache__/bookdb.cpython-37.pyc b/__pycache__/bookdb.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a27ab8b6123a8568e6fc836ffb9e1c5e515a6c63 GIT binary patch literal 1581 zcmaJ=OK;mo5GJWdWXE>uBu!(WKsSd17GO!FBtPW1Mr13A5yXxWIS3%26;|Apv=O$Nr#RbnUG_A*aqRW!K4}OYH2BJHwgpo0)^<z!RlmmJUAgH_~mE$ z10hDO1K$Qyy|ixz_91L_4@Bx0S%27{td{lOerI3U;F&r3!X*!uZS8_U46F<5=lk#M z$hxp2Fkb`6uSX@38N=td5{uNHVLWnULbrNsC`f_t&5J-4zuitPL}2(NRC9Y$%*_hjF2^D5c4v#-ZYW3`Xnm>MeH-H-y)g*niVmkaza|Vm z-6uMAgRfv0@=||EemWddDW|7X^jImV2m=mx(MvpL1f^v`uW1i8$K!zcIAVgM7Cond z80-2aD~;`)lGkwSJD#^w-$@>vVt*8&)3^s!7&1OU>&IC7LsauNP}Oy}i^<*gG&skM zqazvwbRc4VU(A|j>SUSf@y^0H^{29v$1(JVOb+JBKnJ0==tmPQDP*G9fbXIsF+q_) zXAp3Np0g1}7#%{t#1RE+pJ`lbo~*lB^|q^kx-M$;g1BSDc+ggR*FfP9;_9 zA@UF<%;23P@U{$sMlre7gv2>ID5I8`a5_zjPejb2{ec~YME{bw6Bv}-)&JtPs87Qlq+T_od2TUTdM1V(Jrz_YlqWyT$vA`=(Q~qa z+SC`EpvP&-$*L}kTLP3N;JmS2swK-WUQ!kWQ*;cta8hap^j8G6iJ%H>12s9vQ1)}m zl`nzc4b;Nt&;w27LxUu>vmpf>cn|_g{|XV6yXc7&A$lfa2~32T>p~o31d-Ky(t zd0W+LJt;Q{VM_4QYpMdOnHGKE8d$>tT7Th3LW8ck8^~)kfakR)Cz4LkQOvLMIU9-) zt75K`VZ_s-szptUx)z&y{&Z)X(Z4nXW+wC`%nEzy0PUM`Scgw5D~_$7eCGepe*xLG BnhXE{ literal 0 HcmV?d00001 diff --git a/bookapp.py b/bookapp.py index d2284c6..12d3e8e 100644 --- a/bookapp.py +++ b/bookapp.py @@ -1,4 +1,5 @@ import re +import traceback from bookdb import BookDB @@ -6,21 +7,78 @@ def book(book_id): - return "

a book with id %s

" % book_id + # return "

a book with id %s

" % book_id + # return "Specific book with id {}".format(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

" + # return "

a list of books

" + # return "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')] + 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 - srv = make_server('localhost', 8080, application) + srv = make_server('127.0.0.1', 8080, application) srv.serve_forever() diff --git a/wsgi_1.py b/wsgi_1.py old mode 100644 new mode 100755 index 85498d1..1a6e306 --- 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' @@ -38,5 +38,5 @@ def application(environ, start_response): if __name__ == '__main__': from wsgiref.simple_server import make_server - srv = make_server('localhost', 8080, application) + srv = make_server('127.0.0.1', 8080, application) srv.serve_forever()