| OLD | NEW |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 from appengine_wrappers import webapp | 5 from appengine_wrappers import webapp |
| 6 from cron_servlet import CronServlet | 6 from cron_servlet import CronServlet |
| 7 from render_servlet import RenderServlet | 7 from render_servlet import RenderServlet |
| 8 from patch_servlet import PatchServlet |
| 8 from servlet import Request | 9 from servlet import Request |
| 9 | 10 |
| 10 _SERVLETS = { | 11 _SERVLETS = { |
| 11 'cron': CronServlet, | 12 'cron': CronServlet, |
| 13 'patch': PatchServlet, |
| 12 } | 14 } |
| 13 | 15 |
| 14 class Handler(webapp.RequestHandler): | 16 class Handler(webapp.RequestHandler): |
| 15 def __init__(self, request, response): | 17 def __init__(self, request, response): |
| 16 super(Handler, self).__init__(request, response) | 18 super(Handler, self).__init__(request, response) |
| 17 | 19 |
| 18 def _RedirectSpecialCases(self, path): | 20 def _RedirectSpecialCases(self, path): |
| 19 if not path or path == 'index.html': | 21 if not path or path == 'index.html': |
| 20 self.redirect('http://developer.google.com/chrome') | 22 self.redirect('http://developer.google.com/chrome') |
| 21 return True | 23 return True |
| (...skipping 25 matching lines...) Expand all Loading... |
| 47 path.insert(0, channel) | 49 path.insert(0, channel) |
| 48 new_url += '/'.join(path) | 50 new_url += '/'.join(path) |
| 49 self.redirect(new_url) | 51 self.redirect(new_url) |
| 50 return True | 52 return True |
| 51 | 53 |
| 52 def get(self): | 54 def get(self): |
| 53 path, request, response = (self.request.path.lstrip('/'), | 55 path, request, response = (self.request.path.lstrip('/'), |
| 54 self.request, | 56 self.request, |
| 55 self.response) | 57 self.response) |
| 56 | 58 |
| 57 if path in ['favicon.ico', 'robots.txt']: | |
| 58 response.set_status(404) | |
| 59 return | |
| 60 | |
| 61 if self._RedirectSpecialCases(path): | 59 if self._RedirectSpecialCases(path): |
| 62 return | 60 return |
| 63 if self._RedirectFromCodeDotGoogleDotCom(path): | 61 if self._RedirectFromCodeDotGoogleDotCom(path): |
| 64 return | 62 return |
| 65 | 63 |
| 66 if path.startswith('_'): | 64 if path.startswith('_'): |
| 67 servlet_path = path[1:] | 65 servlet_path = path[1:] |
| 68 if servlet_path.find('/') == -1: | 66 if servlet_path.find('/') == -1: |
| 69 servlet_path += '/' | 67 servlet_path += '/' |
| 70 servlet_name, servlet_path = servlet_path.split('/', 1) | 68 servlet_name, servlet_path = servlet_path.split('/', 1) |
| 71 servlet = _SERVLETS.get(servlet_name) | 69 servlet = _SERVLETS.get(servlet_name) |
| 72 if servlet is None: | 70 if servlet is None: |
| 73 response.out.write('"%s" servlet not found' % servlet_path) | 71 response.out.write('"%s" servlet not found' % servlet_path) |
| 74 response.set_status(404) | 72 response.set_status(404) |
| 75 return | 73 return |
| 76 else: | 74 else: |
| 77 servlet_path = path | 75 servlet_path = path |
| 78 servlet = RenderServlet | 76 servlet = RenderServlet |
| 79 | 77 |
| 80 servlet_response = servlet(Request(servlet_path, request.headers)).Get() | 78 servlet_response = servlet(Request(servlet_path, request.headers)).Get() |
| 81 | 79 |
| 82 response.out.write(servlet_response.content.ToString()) | 80 response.out.write(servlet_response.content.ToString()) |
| 83 response.headers.update(servlet_response.headers) | 81 response.headers.update(servlet_response.headers) |
| 84 response.status = servlet_response.status | 82 response.status = servlet_response.status |
| OLD | NEW |