• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3# found in the LICENSE file.
4
5from appengine_wrappers import webapp2
6from handler import Handler
7from servlet import Request
8
9class AppEngineHandler(webapp2.RequestHandler):
10  '''Top-level handler for AppEngine requests. Just converts them into our
11  internal Servlet architecture.
12  '''
13
14  def get(self):
15    profile_mode = self.request.get('profile')
16    if profile_mode:
17      import cProfile, pstats, StringIO
18      pr = cProfile.Profile()
19      pr.enable()
20
21    try:
22      request = Request(self.request.path,
23                        self.request.url[:-len(self.request.path)],
24                        self.request.headers)
25      response = Handler(request).Get()
26    finally:
27      if profile_mode:
28        pr.disable()
29        s = StringIO.StringIO()
30        pstats.Stats(pr, stream=s).sort_stats(profile_mode).print_stats()
31        self.response.out.write(s.getvalue())
32        self.response.headers['Content-Type'] = 'text/plain'
33        self.response.status = 200
34      else:
35        self.response.out.write(response.content.ToString())
36        self.response.headers.update(response.headers)
37        self.response.status = response.status
38