OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import cgi | 6 import cgi |
7 import logging | 7 import logging |
8 import re | 8 import re |
9 import os | 9 import os |
10 | 10 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 url = url[0] % branch | 69 url = url[0] % branch |
70 else: | 70 else: |
71 url = url[0] | 71 url = url[0] |
72 logging.info("Path: " + self.request.path) | 72 logging.info("Path: " + self.request.path) |
73 logging.info("Url: " + url) | 73 logging.info("Url: " + url) |
74 try: | 74 try: |
75 result = urlfetch.fetch(url) | 75 result = urlfetch.fetch(url) |
76 if result.status_code != 200: | 76 if result.status_code != 200: |
77 logging.error("urlfetch failed: " + url) | 77 logging.error("urlfetch failed: " + url) |
78 # TODO(nickbaum): what should we do when the urlfetch fails? | 78 # TODO(nickbaum): what should we do when the urlfetch fails? |
| 79 # Files inside of samples should be rendered with content-type |
| 80 # text/plain so that their source is visible when linked to. The only |
| 81 # types we should serve as-is are images. |
| 82 if (path.startswith("/examples") and |
| 83 not (result.headers['content-type'].startswith('image/') or |
| 84 result.headers['Content-Type'].startswith('image/'))): |
| 85 result.headers['content-type'] = 'text/plain' |
79 except: | 86 except: |
80 logging.error("urlfetch failed: " + url) | 87 logging.error("urlfetch failed: " + url) |
81 # TODO(nickbaum): what should we do when the urlfetch fails? | 88 # TODO(nickbaum): what should we do when the urlfetch fails? |
82 try: | 89 try: |
83 if not memcache.add(path, result, DEFAULT_CACHE_TIME): | 90 if not memcache.add(path, result, DEFAULT_CACHE_TIME): |
84 logging.error("Memcache set failed.") | 91 logging.error("Memcache set failed.") |
85 except: | 92 except: |
86 logging.error("Memcache set failed.") | 93 logging.error("Memcache set failed.") |
87 for key in result.headers: | 94 for key in result.headers: |
88 self.response.headers[key] = result.headers[key] | 95 self.response.headers[key] = result.headers[key] |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 ('/.*', MainPage), | 272 ('/.*', MainPage), |
266 ], debug=False) | 273 ], debug=False) |
267 | 274 |
268 | 275 |
269 def main(): | 276 def main(): |
270 run_wsgi_app(application) | 277 run_wsgi_app(application) |
271 | 278 |
272 | 279 |
273 if __name__ == '__main__': | 280 if __name__ == '__main__': |
274 main() | 281 main() |
OLD | NEW |