Files
i2p.www/www.i2p2/app.py

63 lines
2.0 KiB
Python
Raw Normal View History

2008-02-01 19:31:47 +00:00
from werkzeug import BaseRequest, BaseResponse, ETagResponseMixin, escape, run_simple, SharedDataMiddleware
2008-01-31 20:38:37 +00:00
from werkzeug.exceptions import HTTPException
from werkzeug.routing import RequestRedirect
from jinja import Environment, FileSystemLoader
from jinja.exceptions import TemplateNotFound
import os
2008-02-01 19:31:47 +00:00
import sha
from time import time
2008-01-31 20:38:37 +00:00
from random import randint
class Request(BaseRequest):
"""Useful subclass of the default request that knows how to build urls."""
def __init__(self, environ):
BaseRequest.__init__(self, environ)
2008-02-01 19:31:47 +00:00
class Response(BaseResponse, ETagResponseMixin):
2008-01-31 20:38:37 +00:00
"""Subclass of base response that has a default mimetype of text/html."""
default_mimetype = 'text/html'
# setup jinja
env = Environment(loader=FileSystemLoader('pages', use_memcache=True))
def read_mirrors():
file = open('mirrors', 'r')
dat = file.read()
file.close()
return dat.split('\n')
def app(environ, start_response):
"""The WSGI application that connects all together."""
req = Request(environ)
path = req.path[1:].lower()
if path == '':
path = 'index'
2008-02-01 19:31:47 +00:00
mime_type='text/html'
2008-01-31 20:38:37 +00:00
try:
try:
path.index('.')
2008-03-09 21:14:21 +00:00
if path.split('.')[-1].isdigit() and not path.split('.')[-1].isalpha():
raise ValueError()
2008-01-31 20:38:37 +00:00
tmpl = env.get_template(path)
2008-02-01 19:31:47 +00:00
if path[-3:] == 'txt':
mime_type='text/plain'
2008-02-01 22:53:38 +00:00
if path[-3:] == 'xml':
mime_type='text/xml'
2008-01-31 20:38:37 +00:00
except ValueError:
tmpl = env.get_template(path + '.html')
except TemplateNotFound:
tmpl = env.get_template('not_found.html')
2008-02-01 19:31:47 +00:00
resp = Response(tmpl.render(), mimetype=mime_type)
resp.add_etag()
2008-01-31 20:38:37 +00:00
return resp(environ, start_response)
app = SharedDataMiddleware(app, {
'/_static': os.path.join(os.path.dirname(__file__), 'static'),
'/.bzr': os.path.join(os.path.dirname(__file__), '../.bzr')
})
if __name__ == '__main__':
run_simple('localhost', 5009, app)