blob: 8e5cae8a0d15a672b97674e8d9d5a6558864c87f [file] [log] [blame]
Torne (Richard Coles)58218062012-11-14 11:43:16 +00001# 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
3# found in the LICENSE file.
4
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +01005from cron_servlet import CronServlet
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +01006from instance_servlet import InstanceServlet
Ben Murdochca12bfa2013-07-23 11:17:05 +01007from patch_servlet import PatchServlet
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +01008from servlet import Servlet, Request, Response
Ben Murdochbb1529c2013-08-08 10:24:53 +01009from test_servlet import TestServlet
Torne (Richard Coles)58218062012-11-14 11:43:16 +000010
Ben Murdocheb525c52013-07-10 11:40:50 +010011_DEFAULT_SERVLET = InstanceServlet.GetConstructor()
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010012_SERVLETS = {
13 'cron': CronServlet,
Torne (Richard Coles)a93a17c2013-05-15 11:34:50 +010014 'patch': PatchServlet,
Ben Murdochbb1529c2013-08-08 10:24:53 +010015 'test': TestServlet,
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010016}
Torne (Richard Coles)58218062012-11-14 11:43:16 +000017
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010018class Handler(Servlet):
19 def Get(self):
20 path = self._request.path
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010021
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010022 if path.startswith('_'):
23 servlet_path = path[1:]
Ben Murdocheb525c52013-07-10 11:40:50 +010024 if not '/' in servlet_path:
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010025 servlet_path += '/'
26 servlet_name, servlet_path = servlet_path.split('/', 1)
27 servlet = _SERVLETS.get(servlet_name)
28 if servlet is None:
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010029 return Response.NotFound('"%s" servlet not found' % servlet_path)
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010030 else:
31 servlet_path = path
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010032 servlet = _DEFAULT_SERVLET
Torne (Richard Coles)58218062012-11-14 11:43:16 +000033
Ben Murdocheb525c52013-07-10 11:40:50 +010034 return servlet(
35 Request(servlet_path, self._request.host, self._request.headers)).Get()