Remove sendgrid-proxy.

We are unable to use their service.

Bug: skia:13284
Change-Id: I2c33263e9ff46059b80e184c8575298dd2aaa47c
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/540080
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
diff --git a/sendgrid-proxy/Makefile b/sendgrid-proxy/Makefile
deleted file mode 100644
index 55aa404..0000000
--- a/sendgrid-proxy/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-build:
-	bazelisk build //sendgrid-proxy/...
-
-# The keys from SendGrid are managed at
-# https://app.sendgrid.com/settings/api_keys.
-#
-# The sendgrid-proxy application only loads the API Key on startup, so if the
-# API Key gets updated make sure to restart all sendgrid-proxy pods.
-update-sendgrid-api-key-secret:
-	bazelisk run //kube/go/secrets:secrets -- update skia-public sendgrid-proxy
diff --git a/sendgrid-proxy/go/sendgrid-proxy/BUILD.bazel b/sendgrid-proxy/go/sendgrid-proxy/BUILD.bazel
deleted file mode 100644
index a040d5e..0000000
--- a/sendgrid-proxy/go/sendgrid-proxy/BUILD.bazel
+++ /dev/null
@@ -1,33 +0,0 @@
-load("//bazel/go:go_test.bzl", "go_test")
-load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
-
-go_library(
-    name = "sendgrid-proxy_lib",
-    srcs = ["main.go"],
-    importpath = "go.skia.org/infra/sendgrid-proxy/go/sendgrid-proxy",
-    visibility = ["//visibility:private"],
-    deps = [
-        "//go/common",
-        "//go/httputils",
-        "//go/metrics2",
-        "//go/secret",
-        "//go/sklog",
-    ],
-)
-
-go_binary(
-    name = "sendgrid-proxy",
-    embed = [":sendgrid-proxy_lib"],
-    visibility = ["//visibility:public"],
-)
-
-go_test(
-    name = "sendgrid-proxy_test",
-    srcs = ["main_test.go"],
-    embed = [":sendgrid-proxy_lib"],
-    deps = [
-        "//go/metrics2",
-        "//go/testutils/unittest",
-        "@com_github_stretchr_testify//require",
-    ],
-)
diff --git a/sendgrid-proxy/go/sendgrid-proxy/main.go b/sendgrid-proxy/go/sendgrid-proxy/main.go
deleted file mode 100644
index 41f0655..0000000
--- a/sendgrid-proxy/go/sendgrid-proxy/main.go
+++ /dev/null
@@ -1,81 +0,0 @@
-// A reverse proxy for SendGrid that attaches the SendGrid API Key to every
-// request.
-package main
-
-import (
-	"context"
-	"flag"
-	"fmt"
-	"net/http"
-	"net/http/httputil"
-	"net/url"
-
-	"go.skia.org/infra/go/common"
-	"go.skia.org/infra/go/httputils"
-	"go.skia.org/infra/go/metrics2"
-	"go.skia.org/infra/go/secret"
-	"go.skia.org/infra/go/sklog"
-)
-
-const (
-	secretName = "sendgrid-proxy"
-
-	requestsMetricName = "sendgrid_proxy_requests"
-	errorsMetricName   = "sendgrid_proxy_errors"
-)
-
-var (
-	port      = flag.String("port", ":8000", "HTTP service address (e.g., ':8000')")
-	project   = flag.String("project", "skia-public", "The GCP project that contains the API Key in GCP Secret manager.")
-	promPort  = flag.String("prom_port", ":20000", "Metrics service address (e.g., ':10110')")
-	targetURL = flag.String("target_url", "https://api.sendgrid.com", "The URL we are proxying to.")
-)
-
-func newProxy(target *url.URL, sendGridAPIKey string) *httputil.ReverseProxy {
-	numRequests := metrics2.GetCounter(requestsMetricName)
-	numErrors := metrics2.GetCounter(errorsMetricName)
-	authHeaderValue := []string{fmt.Sprintf("Bearer: %s", sendGridAPIKey)}
-
-	reverseProxy := httputil.NewSingleHostReverseProxy(target)
-	reverseProxy.Director = func(r *http.Request) {
-		r.Header["Authorization"] = authHeaderValue
-		numRequests.Inc(1)
-	}
-	reverseProxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) {
-		numErrors.Inc(1)
-		httputils.ReportError(w, err, "failed to proxy request", http.StatusInternalServerError)
-	}
-
-	return reverseProxy
-}
-
-func main() {
-	common.InitWithMust(
-		"sendmail-proxy",
-		common.PrometheusOpt(promPort),
-		common.MetricsLoggingOpt(),
-	)
-
-	ctx := context.Background()
-	secretClient, err := secret.NewClient(context.Background())
-	if err != nil {
-		sklog.Fatal(err)
-	}
-	sendGridAPIKey, err := secretClient.Get(ctx, *project, secretName, secret.VersionLatest)
-	if err != nil {
-		sklog.Fatal(err)
-	}
-	sklog.Infof("SendGrid API Key retrieved.")
-
-	u, err := url.Parse(*targetURL)
-	if err != nil {
-		sklog.Fatal(err)
-	}
-
-	var h http.Handler = newProxy(u, sendGridAPIKey)
-	h = httputils.HealthzAndHTTPS(h)
-	http.Handle("/", h)
-
-	sklog.Info("Start listening.")
-	sklog.Fatal(http.ListenAndServe(*port, nil))
-}
diff --git a/sendgrid-proxy/go/sendgrid-proxy/main_test.go b/sendgrid-proxy/go/sendgrid-proxy/main_test.go
deleted file mode 100644
index 97db972..0000000
--- a/sendgrid-proxy/go/sendgrid-proxy/main_test.go
+++ /dev/null
@@ -1,100 +0,0 @@
-// Reverse proxy that handles SendGrid API requests and adds in the SendGrid API Key.
-package main
-
-import (
-	"fmt"
-	"net/http"
-	"net/http/httptest"
-	"net/url"
-	"testing"
-
-	"github.com/stretchr/testify/require"
-	"go.skia.org/infra/go/metrics2"
-	"go.skia.org/infra/go/testutils/unittest"
-)
-
-const (
-	goodAPIKey = "123456"
-	badAPIKey  = "654321"
-)
-
-func setupForTest(t *testing.T, h http.HandlerFunc) *url.URL {
-	unittest.MediumTest(t)
-	// Create a stand-in for the SendGrid server.
-	sendGridAPIServer := httptest.NewServer(h)
-	t.Cleanup(func() {
-		sendGridAPIServer.Close()
-	})
-
-	metrics2.GetCounter(requestsMetricName).Reset()
-	metrics2.GetCounter(errorsMetricName).Reset()
-
-	sendGridAPIServerURL, err := url.Parse(sendGridAPIServer.URL)
-	require.NoError(t, err)
-	return sendGridAPIServerURL
-}
-
-func TestNewProxy_HappyPath(t *testing.T) {
-	sendGridAPIServerURL := setupForTest(t, func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, fmt.Sprintf("Bearer: %s", goodAPIKey), r.Header.Get("Authorization"))
-	})
-
-	// Create our proxy and point to the server constructed above.
-	p := newProxy(sendGridAPIServerURL, goodAPIKey)
-
-	// Send it a request.
-	r := httptest.NewRequest("POST", sendGridAPIServerURL.String(), nil)
-	w := httptest.NewRecorder()
-	p.ServeHTTP(w, r)
-
-	// A 200 OK response means the Bearer token was passed along correctly.
-	require.Equal(t, http.StatusOK, w.Result().StatusCode)
-	require.Equal(t, int64(1), metrics2.GetCounter(requestsMetricName).Get())
-	require.Equal(t, int64(0), metrics2.GetCounter(errorsMetricName).Get())
-}
-
-func TestNewProxy_BadAPIKey_ResponseIsStatusUnauthorized(t *testing.T) {
-	sendGridAPIServerURL := setupForTest(t, func(w http.ResponseWriter, r *http.Request) {
-		// Test the test.
-		require.Equal(t, fmt.Sprintf("Bearer: %s", badAPIKey), r.Header.Get("Authorization"))
-		http.Error(w, "unauthorized", http.StatusUnauthorized)
-	})
-
-	// Create our proxy and point to the server constructed above.
-	p := newProxy(sendGridAPIServerURL, badAPIKey)
-
-	// Send it a request.
-	r := httptest.NewRequest("POST", sendGridAPIServerURL.String(), nil)
-	w := httptest.NewRecorder()
-	p.ServeHTTP(w, r)
-
-	// Confirm the StatusUnauthorized makes it back to the caller.
-	require.Equal(t, http.StatusUnauthorized, w.Result().StatusCode)
-	require.Equal(t, int64(1), metrics2.GetCounter(requestsMetricName).Get())
-	require.Equal(t, int64(0), metrics2.GetCounter(errorsMetricName).Get())
-}
-
-func TestNewProxy_BadURLForTarget_ReturnsInternalServiceError(t *testing.T) {
-	// Call setupForTest to reset the metrics.
-	_ = setupForTest(t, nil)
-
-	// Start with a bad target URL.
-	target := &url.URL{
-		Scheme: "http",
-		Host:   "dummy.tld",
-		Path:   "/",
-	}
-
-	// Point proxy to the bad URL.
-	p := newProxy(target, goodAPIKey)
-
-	// Send it a request.
-	r := httptest.NewRequest("POST", target.String(), nil)
-	w := httptest.NewRecorder()
-	p.ServeHTTP(w, r)
-
-	// Confirm StatusInternalServerError and error metric gets incremented.
-	require.Equal(t, http.StatusInternalServerError, w.Result().StatusCode)
-	require.Equal(t, int64(1), metrics2.GetCounter(requestsMetricName).Get())
-	require.Equal(t, int64(1), metrics2.GetCounter(errorsMetricName).Get())
-}