mirror of https://github.com/chubin/wttr.in
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.4 KiB
57 lines
1.4 KiB
#!/usr/bin/env python
|
|
# vim: set encoding=utf-8
|
|
|
|
from gevent.pywsgi import WSGIServer
|
|
from gevent.monkey import patch_all
|
|
patch_all()
|
|
|
|
# pylint: disable=wrong-import-position,wrong-import-order
|
|
import sys
|
|
import os
|
|
import jinja2
|
|
|
|
from flask import Flask, request, send_from_directory
|
|
APP = Flask(__name__)
|
|
|
|
MYDIR = os.path.abspath(
|
|
os.path.dirname(os.path.dirname('__file__')))
|
|
sys.path.append("%s/lib/" % MYDIR)
|
|
|
|
import wttr_srv
|
|
from globals import TEMPLATES, STATIC, LISTEN_HOST, LISTEN_PORT
|
|
# pylint: enable=wrong-import-position,wrong-import-order
|
|
|
|
|
|
MY_LOADER = jinja2.ChoiceLoader([
|
|
APP.jinja_loader,
|
|
jinja2.FileSystemLoader(TEMPLATES),
|
|
])
|
|
|
|
APP.jinja_loader = MY_LOADER
|
|
|
|
@APP.route('/files/<path:path>')
|
|
def send_static(path):
|
|
"Send any static file located in /files/"
|
|
return send_from_directory(STATIC, path)
|
|
|
|
@APP.route('/favicon.ico')
|
|
def send_favicon():
|
|
"Send static file favicon.ico"
|
|
return send_from_directory(STATIC, 'favicon.ico')
|
|
|
|
@APP.route('/malformed-response.html')
|
|
def send_malformed():
|
|
"Send static file malformed-response.html"
|
|
return send_from_directory(STATIC, 'malformed-response.html')
|
|
|
|
@APP.route("/")
|
|
@APP.route("/<string:location>")
|
|
def wttr(location=None):
|
|
"Main function wrapper"
|
|
return wttr_srv.wttr(location, request)
|
|
|
|
SERVER = WSGIServer(
|
|
(LISTEN_HOST, int(os.environ.get('WTTRIN_SRV_PORT', LISTEN_PORT))),
|
|
APP)
|
|
SERVER.serve_forever()
|