#!/usr/bin/env python3

# Note: this script can be used to host a small, local web server using bottle
# that can be used for testing.
# It'll use gevent if you have that installed; otherwise it'll default to
# bottle's built-in development server.

try:
    from gevent import monkey; monkey.patch_all()
    gevent_available = True
except ImportError:
    gevent_available = False

from bottle import get, post, request, response, redirect, route, run, static_file
import os
import os.path as osp

host='localhost'
port=5000

@route('/')
def redir_index():
    return redirect('/index.html')

# Bottle should do this automatically, but it doesn't for some reason
ext_mimetypes = {
    '.png': 'image/png',
    '.jpg': 'image/jpeg',
    '.svg': 'image/svg+xml',
    '.gif': 'image/gif',
    '.css': 'text/css',
    '.js': 'text/javascript',
    '.html': 'text/html',
    '.xml': 'application/xml'
}

@route('/<filename:path>')
def statics(filename):
    ext = osp.splitext(filename)[-1]

    try:
        mimetype = ext_mimetypes[ext]
    except KeyError:
        mimetype = 'text/plain'

    return static_file(filename, root=os.getcwd(), mimetype=mimetype)


if gevent_available:
    server = 'gevent'
else:
    server = None

run(host=host, port=port, server=server)