| from __future__ import with_statement |
| from __future__ import absolute_import |
| from __future__ import unicode_literals |
| import os |
| |
| |
| class StaticHandler(object): |
| def __init__(self, web_root, http_port, https_port): |
| self.static_dir = os.path.join( |
| os.getcwd(), "tools/wave/www") |
| self._web_root = web_root |
| self._http_port = http_port |
| self._https_port = https_port |
| |
| def handle_request(self, request, response): |
| file_path = request.request_path |
| |
| if self._web_root is not None: |
| file_path = file_path[len(self._web_root):] |
| |
| if file_path == "." or file_path == "./" or file_path == "": |
| file_path = "index.html" |
| |
| file_path = file_path.split("?")[0] |
| file_path = os.path.join(self.static_dir, file_path) |
| |
| headers = [] |
| |
| content_types = { |
| "html": "text/html", |
| "js": "text/javascript", |
| "css": "text/css", |
| "jpg": "image/jpeg", |
| "jpeg": "image/jpeg", |
| "ttf": "font/ttf", |
| "woff": "font/woff", |
| "woff2": "font/woff2" |
| } |
| |
| headers.append( |
| ("Content-Type", content_types[file_path.split(".")[-1]])) |
| |
| data = None |
| with open(file_path, "rb") as file: |
| data = file.read() |
| |
| if file_path.split("/")[-1] == "wave-service.js": |
| data = data.decode("UTF-8") |
| data = data.replace("{{WEB_ROOT}}", str(self._web_root)) |
| data = data.replace("{{HTTP_PORT}}", str(self._http_port)) |
| data = data.replace("{{HTTPS_PORT}}", str(self._https_port)) |
| |
| response.content = data |
| response.headers = headers |