Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(596)

Unified Diff: reviewbot/mail_dispatcher.py

Issue 23531026: Remove the review bot app. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « reviewbot/handlers/policy_checklist/review_message.txt ('k') | reviewbot/model/app_config.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: reviewbot/mail_dispatcher.py
===================================================================
--- reviewbot/mail_dispatcher.py (revision 221173)
+++ reviewbot/mail_dispatcher.py (working copy)
@@ -1,101 +0,0 @@
-# Copyright (c) 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Main app that handles incoming mail and dispatches it to handlers."""
-
-import logging
-import re
-
-import webapp2
-import webob.exc
-
-from google.appengine.api import app_identity
-from google.appengine.api import mail
-
-import third_party # pylint: disable=W0611
-
-import handlers.policy_checklist
-from review import Review
-from rietveld import Rietveld
-import util
-
-
-# Lists the handlers served by the review bot app. The local part of email
-# addresses the app receives email on is used as a key into the handler map.
-# Each handler is just a function that gets called with the email address, the
-# email message, a Review object and a Rietveld interface.
-#
-# New handlers can be added by adding the code in handlers/<handler_name>.py,
-# importing the module and adding an entry to the HANDLERS map.
-HANDLERS = {
- 'policy_checklist': handlers.policy_checklist.process
-}
-
-
-# Regular expression that matches email addresses belonging to the review bot
-# app and extracts the handler name.
-REVIEW_BOT_RECIPIENT_RE = re.compile('^([^@]+)@%s.appspotmail.com$' %
- app_identity.get_application_id())
-
-
-# This is the regular expression that rietveld uses to extract the issue number
-# from the mail subject at the time of writing this. This code needs to be kept
-# up-to-date with the mechanism rietveld uses so the tools don't confuse issues.
-RIETVELD_ISSUE_NUMBER_RE = re.compile(r'\(issue *(?P<id>\d+)\)$')
-
-
-class MailDispatcher(webapp2.RequestHandler):
- """Dispatches mail to handlers as indicated by email addresses."""
-
- def post(self):
- """Handles POST requests.
-
- Parses the incoming mail message. Dispatches to interested handlers based on
- the list of mail recipients.
- """
-
- # Singleton Rietveld interface for this request.
- rietveld = Rietveld()
-
- # Parse the message and instantiate the review interface.
- message = mail.InboundEmailMessage(self.request.body)
- match = RIETVELD_ISSUE_NUMBER_RE.search(message.subject)
- if match is None:
- raise webob.exc.HTTPBadRequest('Failed to parse issue id: %s' %
- message.subject)
- review = Review(rietveld, match.groupdict()['id'])
-
- # Determine recipients and run the handlers one by one.
- recipients = set(util.get_emails(getattr(message, 'to', '')) +
- util.get_emails(getattr(message, 'cc', '')))
- for addr in recipients:
- match = REVIEW_BOT_RECIPIENT_RE.match(addr)
- if not match:
- continue
-
- try:
- handler = HANDLERS[match.group(1)]
- except KeyError:
- continue
-
- try:
- handler(addr, message, review, rietveld)
- except: # pylint: disable=W0702
- logging.exception('Handler %s failed!', match.group(1))
-
- def handle_exception(self, exception, debug):
- """Handles exceptions to print HTTP error details.
-
- Args:
- exception: The exception.
- debug: Whether we're in debug mode.
- """
- if isinstance(exception, webob.exc.HTTPException):
- logging.warning('Request %s failed: %d - %s',
- self.request.url, exception.code, exception.detail)
-
- webapp2.RequestHandler.handle_exception(self, exception, debug)
-
-
-app = webapp2.WSGIApplication([('/_ah/mail/.*', MailDispatcher)])
« no previous file with comments | « reviewbot/handlers/policy_checklist/review_message.txt ('k') | reviewbot/model/app_config.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698