// getOAuthClient returns an oauth client. func getOAuthClient(cacheFilePath string) *http.Client { var client *http.Client var err error if *doOauth || *local { if *local { // Load client secrets file. The client_secret.json file must come from // project id: 470362608618, which is whitelisted for access to // gs://chromium-skia-gm. client, err = auth.NewClientWithTransport(true, cacheFilePath, *clientSecretFile, nil, auth.SCOPE_READ_ONLY) if err != nil { glog.Fatalf("Failed to auth: (Did you download the client_secret.json file from the project with ID: google.com:chrome-skia #470362608618 ?) %s", err) } } else { // Load client id and secret from metadata. clientId := metadata.Must(metadata.ProjectGet(metadata.CHROMIUM_SKIA_GM_CLIENT_ID)) clientSecret := metadata.Must(metadata.ProjectGet(metadata.CHROMIUM_SKIA_GM_CLIENT_SECRET)) client, err = auth.NewClientFromIdAndSecret(clientId, clientSecret, cacheFilePath, auth.SCOPE_READ_ONLY) if err != nil { glog.Fatalf("Failed to auth: %s", err) } } } return client }
// NewGMail returns a new GMail object which is authorized to send email. func NewGMail(clientId, clientSecret, tokenCacheFile string) (*GMail, error) { client, err := auth.NewClientFromIdAndSecret(clientId, clientSecret, tokenCacheFile, gmail.GmailComposeScope) if err != nil { return nil, err } service, err := gmail.New(client) if err != nil { return nil, err } return &GMail{ service: service, }, nil }
func main() { defer common.LogPanic() common.InitWithMetrics("autoroll", graphiteServer) Init() v, err := skiaversion.GetVersion() if err != nil { glog.Fatal(err) } glog.Infof("Version %s, built at %s", v.Commit, v.Date) if *testing { *useMetadata = false } // Create the Rietveld client. client, err := auth.NewClientFromIdAndSecret(rietveld.CLIENT_ID, rietveld.CLIENT_SECRET, path.Join(*workdir, "oauth_cache"), rietveld.OAUTH_SCOPES...) if err != nil { glog.Fatal(err) } r := rietveld.New(RIETVELD_URL, client) // Retrieve the list of extra CQ trybots. // TODO(borenet): Make this editable on the web front-end. cqExtraTrybots, err := getCQExtraTrybots() if err != nil { glog.Fatal(err) } // Retrieve the initial email list. emails, err := getSheriff() if err != nil { glog.Fatal(err) } // Start the autoroller. arb, err = autoroller.NewAutoRoller(*workdir, cqExtraTrybots, emails, r, time.Minute, 15*time.Minute, *depot_tools) if err != nil { glog.Fatal(err) } // Update the current sheriff in a loop. go func() { for _ = range time.Tick(30 * time.Minute) { emails, err := getSheriff() if err != nil { glog.Errorf("Failed to retrieve current sheriff: %s", err) } else { arb.SetEmails(emails) } } }() serverURL := "https://" + *host if *testing { serverURL = "http://" + *host + *port } // By default use a set of credentials setup for localhost access. var cookieSalt = "notverysecret" var clientID = "31977622648-1873k0c1e5edaka4adpv1ppvhr5id3qm.apps.googleusercontent.com" var clientSecret = "cw0IosPu4yjaG2KWmppj2guj" var redirectURL = serverURL + "/oauth2callback/" if *useMetadata { cookieSalt = metadata.Must(metadata.ProjectGet(metadata.COOKIESALT)) clientID = metadata.Must(metadata.ProjectGet(metadata.CLIENT_ID)) clientSecret = metadata.Must(metadata.ProjectGet(metadata.CLIENT_SECRET)) } login.Init(clientID, clientSecret, redirectURL, cookieSalt, login.DEFAULT_SCOPE, login.DEFAULT_DOMAIN_WHITELIST, false) runServer(serverURL) }