From 863d8e5ae55debc08bf095354aee0a63417624fc Mon Sep 17 00:00:00 2001
From: Lin Jen-Shin <godfat@godfat.org>
Date: Mon, 23 May 2016 22:16:40 +0800
Subject: [PATCH] use split and try to unify error raising

---
 .../email/handler/create_issue_handler.rb      | 18 +++++++++---------
 .../email/handler/create_note_handler.rb       |  2 +-
 lib/gitlab/email/receiver.rb                   |  2 --
 3 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/lib/gitlab/email/handler/create_issue_handler.rb b/lib/gitlab/email/handler/create_issue_handler.rb
index cba8f2b61f6..7e3506bbd3f 100644
--- a/lib/gitlab/email/handler/create_issue_handler.rb
+++ b/lib/gitlab/email/handler/create_issue_handler.rb
@@ -5,8 +5,16 @@ module Gitlab
   module Email
     module Handler
       class CreateIssueHandler < BaseHandler
+        attr_reader :project_namespace, :authentication_token
+
+        def initialize(mail, mail_key)
+          super(mail, mail_key)
+          @project_namespace, @authentication_token =
+            mail_key && mail_key.split('+', 2)
+        end
+
         def can_handle?
-          !!project
+          !!(project_namespace && project)
         end
 
         def execute
@@ -28,14 +36,6 @@ module Gitlab
         end
 
         private
-        def authentication_token
-          mail_key[/[^\+]+$/]
-        end
-
-        def project_namespace
-          mail_key[/^[^\+]+/]
-        end
-
         def create_issue
           Issues::CreateService.new(
             project,
diff --git a/lib/gitlab/email/handler/create_note_handler.rb b/lib/gitlab/email/handler/create_note_handler.rb
index 282f1844097..b91dd623161 100644
--- a/lib/gitlab/email/handler/create_note_handler.rb
+++ b/lib/gitlab/email/handler/create_note_handler.rb
@@ -6,7 +6,7 @@ module Gitlab
     module Handler
       class CreateNoteHandler < BaseHandler
         def can_handle?
-          !!sent_notification
+          !!(mail_key && sent_notification)
         end
 
         def execute
diff --git a/lib/gitlab/email/receiver.rb b/lib/gitlab/email/receiver.rb
index 7038346192b..a497d09b0a8 100644
--- a/lib/gitlab/email/receiver.rb
+++ b/lib/gitlab/email/receiver.rb
@@ -28,8 +28,6 @@ module Gitlab
         mail = build_mail
         mail_key = extract_mail_key(mail)
 
-        raise SentNotificationNotFoundError unless mail_key
-
         if handler = Handler.for(mail, mail_key)
           handler.execute
         elsif mail_key =~ %r{/|\+}
-- 
GitLab