summaryrefslogtreecommitdiff
path: root/mediabrowser/wsgi.py
blob: 038ca5b7b441d7da3f48119d2f8b9c47d4ca2a2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import mediabrowser

from flask import Flask
from werkzeug.contrib.cache import SimpleCache

import os
import logging

logging.basicConfig(level=logging.INFO)
root = os.getenv("MEDIABROWSER_ROOT")
if not root:
	raise Exception('Must set MEDIABROWSER_ROOT variable')
cache = SimpleCache()
application = Flask("mediabrowser-demo")
application.register_blueprint(mediabrowser.build(root, cache))

def reverse_proxified(app):
    """
    Configure apache as:
      RequestHeader set X-Script-Name /videos
    """
    def wsgi_call(environ, start_response):
        script_name = environ.get('HTTP_X_SCRIPT_NAME', '')
        if script_name:
            environ['SCRIPT_NAME'] = script_name
            path_info = environ['PATH_INFO']
            if path_info.startswith(script_name):
                environ['PATH_INFO'] = path_info[len(script_name):]

        scheme = environ.get('HTTP_X_SCHEME', '')
        if scheme:
            environ['wsgi.url_scheme'] = scheme
        return app(environ, start_response)
    return wsgi_call

application = reverse_proxified(application.wsgi_app)