From db86d620d82ff358996d624a4e3c428e8b49d739 Mon Sep 17 00:00:00 2001 From: stevetwalker <29964517+stevetwalker@users.noreply.github.com> Date: Fri, 1 May 2020 17:24:19 -0700 Subject: [PATCH] Initial commit --- __pycache__/bookdb.cpython-37.pyc | Bin 0 -> 1580 bytes bookapp.py | 59 +++++++++++++++++++++++++++--- wsgi_1.py | 11 +++--- 3 files changed, 60 insertions(+), 10 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..81dc616e54103c210709cc0070ade8c1fb9bfe88 GIT binary patch literal 1580 zcmaJ=OK%%D5azBPksaHq^QsLLD03)a0hX{U$q%`%5m`!N1hpf?4gv^j1!_r2gmy`V zTv^e=IVIN~de5Ob7U-paN7w#~oI0dz*U6z=a5%f1*_rQ~nZxDfMFeZ@@4tR^vk3iT zUar;xD34+5GZ4=ZMb!BK`@P#j)TJq!rWu<3n5MUAjxNwetKX(ebeXPL{SN(xuF|_! zzen%W2lS!Uzx|kLIdtt5<<|rF^YwB;dkkBD2ZAB6K`oa$)ct^3DH9J)hzWk#S@uxM zVdF4xz|<_`n}S`3tsjDz`^D%F=M!q6_s%=#!U50J$rmmF8J!vz45E)N&@XH6oETj= zF_^CdWZ2Gc?(goKG&sAnOw8kuf#PziOiWPIln3!FM@dY&MBB@vr%W<`B6SOn&wKT~ z_AAYlZtIwxvvxztQCGfgH>dTGXx%QAy>`g7mcpyFC%VtuT|h^>#nJTh;(o|=9LQ*N zkb!?`6EusGM|1o|n~yH;hcY0cJ^E3cim+9ivWQMYnC~Ujpf;R8HO*QQlDHP$T_)+n(DI{^xI%zsrV}3Y|-Y?;i4x^ zn^{=MNmg%0wYMkv%q-XG2okYQXSUesM3Rm}qc3$jZ^k5?-&h1{#e_4I-w+m`X%myW z#g}t(S!KQ?Kh+0JscCbHpJ>fQ%z?u_{F00~#m#9vkOIGEU0fTDLLQKq!+Qe?7|Kxu z*2zkBXSd*2y~?id?^bq`M@o`gr4*s9=E0{w6MY-cCNbe>x4%2^aW? zg(2(9vANHuZ7;RbTz5rlVKnz=s+A>UNJ1rtm&x>`!l$wqPl#fWiROK=hmYh0#}c1G zz#;yb4;d!74*fEY8CVD0;L?}LdRrxbr?gew-b%LXBjH&rb+&(91G}vU`J!wyCUv{#S^K9@JHEKB#MBJ zOTsE;4?5l}?3|Kc@Rz@jdsUb3Y5UOriRE(ZcXlT0N{B;Q|>QHL2ZbFzs~ zSs(?)Pv$8ntEMbo0ZG@#4gCibgU;Ca0!sA3a*G#1zSoDF0| zbUxEcaq1gUGNNom#fU94f2OnT=-(IuI}>ISX1V?O03FzI*nm$fE3RXnZ0i5de*x~> BnW_K) literal 0 HcmV?d00001 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'