59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
from milla.dispatch import routing
|
|
from webob import acceptparse
|
|
import codecs
|
|
import jinja2
|
|
import milla
|
|
import os
|
|
import random
|
|
import yaml
|
|
|
|
|
|
OFFERS = [
|
|
'application/xhtml+xml',
|
|
'text/html',
|
|
]
|
|
|
|
|
|
try:
|
|
YamlLoader = yaml.CLoader
|
|
except AttributeError:
|
|
YamlLoader = yaml.Loader
|
|
|
|
|
|
env = jinja2.Environment(
|
|
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
|
|
)
|
|
|
|
|
|
songquotes = os.path.join(os.path.dirname(__file__), 'songquotes.yml')
|
|
with codecs.open(songquotes, 'r', encoding='utf-8') as f:
|
|
songquotes = yaml.load(f, Loader=YamlLoader)
|
|
|
|
|
|
def home(request):
|
|
response = request.ResponseClass()
|
|
accept = acceptparse.MIMEAccept(
|
|
request.accept.header_value.replace('*/*', '')
|
|
)
|
|
response.content_type = accept.best_match(OFFERS,
|
|
response.default_content_type)
|
|
tmpl = env.get_template('index.html')
|
|
response.text = tmpl.render(quote=random.choice(songquotes))
|
|
return response
|
|
|
|
|
|
router = routing.Router()
|
|
router.add_route('/', home)
|
|
application = milla.Application(router)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
from wsgiref import simple_server
|
|
httpd = simple_server.make_server('', 8080, application)
|
|
try:
|
|
httpd.serve_forever()
|
|
except KeyboardInterrupt:
|
|
print('')
|
|
httpd.shutdown()
|
|
httpd.server_close()
|