misc/dashboard/codereview: switch to using gobot to update CL reviewer info.

R=rsc
CC=golang-dev
https://golang.org/cl/6453063
diff --git a/misc/dashboard/codereview/dashboard/cl.go b/misc/dashboard/codereview/dashboard/cl.go
index a53a286..8665947 100644
--- a/misc/dashboard/codereview/dashboard/cl.go
+++ b/misc/dashboard/codereview/dashboard/cl.go
@@ -14,7 +14,6 @@
 	"io"
 	"io/ioutil"
 	"net/http"
-	netmail "net/mail"
 	"net/url"
 	"regexp"
 	"sort"
@@ -23,7 +22,6 @@
 
 	"appengine"
 	"appengine/datastore"
-	"appengine/mail"
 	"appengine/taskqueue"
 	"appengine/urlfetch"
 	"appengine/user"
@@ -35,6 +33,7 @@
 }
 
 const codereviewBase = "http://codereview.appspot.com"
+const gobotBase = "http://research.swtch.com/gobot_codereview"
 
 var clRegexp = regexp.MustCompile(`\d+`)
 
@@ -184,34 +183,21 @@
 		if !found {
 			c.Infof("Adding %v as a reviewer of CL %v", rev, n)
 
-			// We can't do this easily, as we need authentication to edit
-			// an issue on behalf of a user, which is non-trivial. For now,
-			// just send a mail with the body "R=<reviewer>", Cc'ing that person,
-			// and rely on social convention.
-			cl := new(CL)
-			err := datastore.Get(c, key, cl)
+			url := fmt.Sprintf("%s?cl=%s&r=%s", gobotBase, n, rev)
+			resp, err := urlfetch.Client(c).Get(url)
 			if err != nil {
-				c.Errorf("%s", err)
+				c.Errorf("Gobot GET failed: %v", err)
 				http.Error(w, err.Error(), 500)
 				return
 			}
-			msg := &mail.Message{
-				Sender: u.Email,
-				To:     []string{preferredEmail[rev]},
-				Cc:     cl.Recipients,
-				// Take care to match Rietveld's subject line
-				// so that Gmail will correctly thread mail.
-				Subject: cl.Subject + " (issue " + n + ")",
-				Body:    "R=" + rev + "\n\n(sent by gocodereview)",
+			defer resp.Body.Close()
+			if resp.StatusCode != 200 {
+				c.Errorf("Gobot GET failed: got HTTP response %d", resp.StatusCode)
+				http.Error(w, "Failed contacting Gobot", 500)
+				return
 			}
-			if cl.LastMessageID != "" {
-				msg.Headers = netmail.Header{
-					"In-Reply-To": []string{cl.LastMessageID},
-				}
-			}
-			if err := mail.Send(c, msg); err != nil {
-				c.Errorf("mail.Send: %v", err)
-			}
+
+			c.Infof("Gobot said %q", resp.Status)
 		}
 	}