From 7133c7dd9a7f91f680e131a8e5efecda6cb9dd02 Mon Sep 17 00:00:00 2001 From: Jason Jenkins Date: Thu, 28 Jan 2021 13:04:03 -0600 Subject: [PATCH] WSGI activity complete --- __pycache__/bookdb.cpython-37.pyc | Bin 0 -> 1589 bytes bookapp.py | 71 +++++++++++++++++++++++++++--- wsgi_1.py | 10 ++--- 3 files changed, 71 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..23781643da5bbb86e67da952c8a60f376d552e1b GIT binary patch literal 1589 zcmaJ>OK%%D5Z+xqB0IKIyJ;E&1Sb!e8l3#LNBeIm(2x?o190V0mY^fzBG1?^+ za%EKu=agJ~=skx9=%qiX7hU@=a%qQ@?K(Y_0*AB9nVtE*nbG0$@}dRn_rKSE`ZHr$ zf9Z$owE)Uv*yZN^Cup6+|0}yk+*!s=>U^T6`_8a@s2G7*#CoWmAY-<+;qHkSVKR$e8 z$JV7CgZVl@hHd}i{OY_;gR?Ws#4HXeC=Mf1#{@M^SP;*01jo3GmANdrQYZ6=CGWuT zu~B}Zs8r=wSPA}$@*(4@+!Vn$qC8gRBNiWzyXAJvKjR_e)NlPzsk-Hf>a%heV3KZW zH2t`^A2JmOA{re)p)94NXRYMXoQRT1OqKRS5#UfAfO2h}ccgZhrH6E?biRs)y;*kd zU=o~*92m(Z5IS|024OjCPO|(-fIx@UOP|`t5U#y6)t6AR4-PP8pI%2z^=SG#&_!UeYeAk47O2 zaLnMjNiS$9M!JN_N^NJi=+)fKUC-Oy+)W;}a4?KfYutq@3>fdDjT0<`0jhchRB_#% zd~&}%4KFa`=$M8f?TfL#&!v2+YKCbB_n-`UT}5+ zjmqLFYDucpx5z`3FoX9BfwyfC)bh!_Iwa1~VF@+Ggwtt~e=5ct#sJt+Nc66WJEieN z$RT`D^d*iWpyP_L&8iEH?pAk`Z|b9Yyvo1vnlzwM7gDbn(mXexEIktgj*bMC3FXPx zS7bC`M)aH%P@4vV6ZB-BalRmaEeX<7fy=xkp7IIHZfFz z6;PdX3}wHdTm=&NEubd8fF7u;02(Bzo)0MC!2JkN1~-VP+(S>Lh|n`JmcT@Wxh}*B zR>1rmt6OosZEw3$*-T1xLKyrJ6kk#mQq8pJ0oTA94$;P05DN{u>K2e!s{zmJbxtIm zpyM&W$>)3^BCPV6PKpsvi;5OiEjG2-((|V~+l>CLAuuzcCt;S`pAXQ18HWvcwX)*a K`j<`p|M?HX7@cSU literal 0 HcmV?d00001 diff --git a/bookapp.py b/bookapp.py index d2284c6..4f22845 100644 --- a/bookapp.py +++ b/bookapp.py @@ -6,18 +6,79 @@ 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')] + + 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..3cdba18 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'