summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/webserver/game_data_handler.py
blob: 5f53d74e831ca8b9528d12a89ce750a134a5053b (plain) (blame)
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
import tornado.web
import os.path

import config

class GameDataHandler(tornado.web.StaticFileHandler):
    def initialize(self):
        super(GameDataHandler, self).initialize(".")

    def head(self, version, path):
        self.get(version, path, include_body=False)

    def get(self, version, path, include_body=True):
        if version not in GameDataHandler._client_paths:
            raise tornado.web.HTTPError(404)
        self.root = GameDataHandler._client_paths[version]
        super(GameDataHandler, self).get(path, include_body)

    def set_extra_headers(self, path):
        if config.game_data_no_cache:
            self.set_header("Cache-Control",
                            "no-cache, no-store, must-revalidate")
            self.set_header("Pragma", "no-cache")
            self.set_header("Expires", "0")

    _client_paths = {}

    @classmethod
    def add_version(cls, version, path):
        cls._client_paths[version] = os.path.abspath(path)