OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import os | 5 import os |
6 import urlparse | 6 import urlparse |
7 | 7 |
| 8 from empty_dir_file_system import EmptyDirFileSystem |
| 9 from local_file_system import LocalFileSystem |
8 from render_servlet import RenderServlet | 10 from render_servlet import RenderServlet |
9 from fake_fetchers import ConfigureFakeFetchers | 11 from server_instance import ServerInstance |
10 from servlet import Request | 12 from servlet import Request |
11 | 13 |
12 class LocalRenderer(object): | 14 class LocalRenderer(object): |
13 '''Renders pages fetched from the local file system. | 15 '''Renders pages fetched from the local file system. |
14 ''' | 16 ''' |
15 def __init__(self, base_dir): | 17 def __init__(self, base_dir): |
16 self._base_dir = base_dir.replace(os.sep, '/').rstrip('/') | 18 self._base_dir = base_dir.replace(os.sep, '/').rstrip('/') |
17 | 19 |
18 def Render(self, path, headers=None, servlet=RenderServlet): | 20 def Render(self, path, headers=None, offline=False, servlet=RenderServlet): |
19 '''Renders |path|, returning a tuple of (status, contents, headers). | 21 '''Renders |path|, returning a tuple of (status, contents, headers). |
20 ''' | 22 ''' |
21 headers = headers or {} | 23 headers = headers or {} |
22 # TODO(kalman): do this via a LocalFileSystem not this fake AppEngine stuff. | |
23 ConfigureFakeFetchers(os.path.join(self._base_dir, 'docs')) | |
24 url_path = urlparse.urlparse(path.replace(os.sep, '/')).path | 24 url_path = urlparse.urlparse(path.replace(os.sep, '/')).path |
25 return servlet(Request(url_path, headers)).Get() | 25 if offline: |
| 26 si = ServerInstance.CreateOffline( |
| 27 'trunk', |
| 28 host_file_system_type=LocalFileSystem, |
| 29 app_samples_file_system=EmptyDirFileSystem()) |
| 30 else: |
| 31 si = ServerInstance.CreateOnline( |
| 32 'trunk', |
| 33 host_file_system=LocalFileSystem(self._base_dir), |
| 34 app_samples_file_system=EmptyDirFileSystem()) |
| 35 return servlet(Request(url_path, headers)).Get(server_instance=si) |
OLD | NEW |