From fac334566881d43dc76881e855df29e8c9e11faf Mon Sep 17 00:00:00 2001
From: John McCabe <john@johnmccabe.net>
Date: Wed, 21 Mar 2018 14:05:55 +0000
Subject: [PATCH] Use http package consts for http methods

This commit replaces occurences of http method strings with the
corresponding consts from the http package.

*Note* UPDATE is not strictly speaking a valid method and as such isn't
part of the http package (should be a PUT or PATCH?)

Signed-off-by: John McCabe <john@johnmccabe.net>
---
 gateway/handlers/cors.go        |  2 +-
 gateway/server.go               | 20 ++++++++++----------
 gateway/tests/cors_test.go      |  4 ++--
 watchdog/main.go                | 10 +++++-----
 watchdog/requesthandler_test.go | 24 ++++++++++++------------
 5 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/gateway/handlers/cors.go b/gateway/handlers/cors.go
index 5c1bfbbe..29b1c3a3 100644
--- a/gateway/handlers/cors.go
+++ b/gateway/handlers/cors.go
@@ -11,7 +11,7 @@ type CORSHandler struct {
 func (c CORSHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	// https://raw.githubusercontent.com/openfaas/store/master/store.json
 	w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
-	w.Header().Set("Access-Control-Allow-Methods", "GET")
+	w.Header().Set("Access-Control-Allow-Methods", http.MethodGet)
 	w.Header().Set("Access-Control-Allow-Origin", c.AllowedHost)
 
 	(*c.Upstream).ServeHTTP(w, r)
diff --git a/gateway/server.go b/gateway/server.go
index 112dac98..15b2ad0a 100644
--- a/gateway/server.go
+++ b/gateway/server.go
@@ -94,15 +94,15 @@ func main() {
 
 	r.HandleFunc("/system/alert", faasHandlers.Alert)
 
-	r.HandleFunc("/system/function/{name:[-a-zA-Z_0-9]+}", queryFunction).Methods("GET")
-	r.HandleFunc("/system/functions", listFunctions).Methods("GET")
-	r.HandleFunc("/system/functions", faasHandlers.DeployFunction).Methods("POST")
-	r.HandleFunc("/system/functions", faasHandlers.DeleteFunction).Methods("DELETE")
-	r.HandleFunc("/system/functions", faasHandlers.UpdateFunction).Methods("PUT")
+	r.HandleFunc("/system/function/{name:[-a-zA-Z_0-9]+}", queryFunction).Methods(http.MethodGet)
+	r.HandleFunc("/system/functions", listFunctions).Methods(http.MethodGet)
+	r.HandleFunc("/system/functions", faasHandlers.DeployFunction).Methods(http.MethodPost)
+	r.HandleFunc("/system/functions", faasHandlers.DeleteFunction).Methods(http.MethodDelete)
+	r.HandleFunc("/system/functions", faasHandlers.UpdateFunction).Methods(http.MethodPut)
 
 	if faasHandlers.QueuedProxy != nil {
-		r.HandleFunc("/async-function/{name:[-a-zA-Z_0-9]+}/", faasHandlers.QueuedProxy).Methods("POST")
-		r.HandleFunc("/async-function/{name:[-a-zA-Z_0-9]+}", faasHandlers.QueuedProxy).Methods("POST")
+		r.HandleFunc("/async-function/{name:[-a-zA-Z_0-9]+}/", faasHandlers.QueuedProxy).Methods(http.MethodPost)
+		r.HandleFunc("/async-function/{name:[-a-zA-Z_0-9]+}", faasHandlers.QueuedProxy).Methods(http.MethodPost)
 
 		r.HandleFunc("/system/async-report", faasHandlers.AsyncReport)
 	}
@@ -113,13 +113,13 @@ func main() {
 	allowedCORSHost := "raw.githubusercontent.com"
 	fsCORS := handlers.DecorateWithCORS(fs, allowedCORSHost)
 
-	r.PathPrefix("/ui/").Handler(http.StripPrefix("/ui", fsCORS)).Methods("GET")
+	r.PathPrefix("/ui/").Handler(http.StripPrefix("/ui", fsCORS)).Methods(http.MethodGet)
 
-	r.HandleFunc("/", faasHandlers.RoutelessProxy).Methods("POST")
+	r.HandleFunc("/", faasHandlers.RoutelessProxy).Methods(http.MethodPost)
 
 	metricsHandler := metrics.PrometheusHandler()
 	r.Handle("/metrics", metricsHandler)
-	r.Handle("/", http.RedirectHandler("/ui/", http.StatusMovedPermanently)).Methods("GET")
+	r.Handle("/", http.RedirectHandler("/ui/", http.StatusMovedPermanently)).Methods(http.MethodGet)
 
 	tcpPort := 8080
 
diff --git a/gateway/tests/cors_test.go b/gateway/tests/cors_test.go
index e2765eb2..43aa113b 100644
--- a/gateway/tests/cors_test.go
+++ b/gateway/tests/cors_test.go
@@ -29,8 +29,8 @@ func Test_HeadersAdded(t *testing.T) {
 	}
 
 	actualMethods := rr.Header().Get("Access-Control-Allow-Methods")
-	if actualMethods != "GET" {
-		t.Errorf("Access-Control-Allow-Methods: want: %s got: %s", "GET", actualMethods)
+	if actualMethods != http.MethodGet {
+		t.Errorf("Access-Control-Allow-Methods: want: %s got: %s", http.MethodGet, actualMethods)
 	}
 
 }
diff --git a/watchdog/main.go b/watchdog/main.go
index 56ee03b6..adcd9b57 100644
--- a/watchdog/main.go
+++ b/watchdog/main.go
@@ -277,7 +277,7 @@ func removeLockFile() error {
 func makeHealthHandler() func(http.ResponseWriter, *http.Request) {
 	return func(w http.ResponseWriter, r *http.Request) {
 		switch r.Method {
-		case "GET":
+		case http.MethodGet:
 			if lockFilePresent() == false {
 				w.WriteHeader(http.StatusInternalServerError)
 				return
@@ -298,11 +298,11 @@ func makeRequestHandler(config *WatchdogConfig) func(http.ResponseWriter, *http.
 	return func(w http.ResponseWriter, r *http.Request) {
 		switch r.Method {
 		case
-			"POST",
-			"PUT",
-			"DELETE",
+			http.MethodPost,
+			http.MethodPut,
+			http.MethodDelete,
 			"UPDATE",
-			"GET":
+			http.MethodGet:
 			pipeRequest(config, w, r, r.Method)
 			break
 		default:
diff --git a/watchdog/requesthandler_test.go b/watchdog/requesthandler_test.go
index 3348c3db..d4a9766d 100644
--- a/watchdog/requesthandler_test.go
+++ b/watchdog/requesthandler_test.go
@@ -29,7 +29,7 @@ func TestHandler_HasCustomHeaderInFunction_WithCgi_Mode(t *testing.T) {
 	rr := httptest.NewRecorder()
 
 	body := ""
-	req, err := http.NewRequest("POST", "/", bytes.NewBufferString(body))
+	req, err := http.NewRequest(http.MethodPost, "/", bytes.NewBufferString(body))
 	req.Header.Add("custom-header", "value")
 
 	if err != nil {
@@ -68,7 +68,7 @@ func TestHandler_HasCustomHeaderInFunction_WithCgiMode_AndBody(t *testing.T) {
 	rr := httptest.NewRecorder()
 
 	body := "test"
-	req, err := http.NewRequest("POST", "/", bytes.NewBufferString(body))
+	req, err := http.NewRequest(http.MethodPost, "/", bytes.NewBufferString(body))
 	req.Header.Add("custom-header", "value")
 
 	if err != nil {
@@ -110,7 +110,7 @@ func TestHandler_StderrWritesToStderr_CombinedOutput_False(t *testing.T) {
 	log.SetOutput(b)
 
 	body := ""
-	req, err := http.NewRequest("POST", "/", bytes.NewBufferString(body))
+	req, err := http.NewRequest(http.MethodPost, "/", bytes.NewBufferString(body))
 
 	if err != nil {
 		t.Fatal(err)
@@ -151,7 +151,7 @@ func TestHandler_StderrWritesToResponse_CombinedOutput_True(t *testing.T) {
 	log.SetOutput(b)
 
 	body := ""
-	req, err := http.NewRequest("POST", "/", bytes.NewBufferString(body))
+	req, err := http.NewRequest(http.MethodPost, "/", bytes.NewBufferString(body))
 
 	if err != nil {
 		t.Fatal(err)
@@ -200,7 +200,7 @@ func TestHandler_DoesntHaveCustomHeaderInFunction_WithoutCgi_Mode(t *testing.T)
 	rr := httptest.NewRecorder()
 
 	body := ""
-	req, err := http.NewRequest("POST", "/", bytes.NewBufferString(body))
+	req, err := http.NewRequest(http.MethodPost, "/", bytes.NewBufferString(body))
 	req.Header.Add("custom-header", "value")
 	if err != nil {
 		t.Fatal(err)
@@ -236,7 +236,7 @@ func TestHandler_HasXDurationSecondsHeader(t *testing.T) {
 	rr := httptest.NewRecorder()
 
 	body := "hello"
-	req, err := http.NewRequest("POST", "/", bytes.NewBufferString(body))
+	req, err := http.NewRequest(http.MethodPost, "/", bytes.NewBufferString(body))
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -262,7 +262,7 @@ func TestHandler_HasXDurationSecondsHeader(t *testing.T) {
 func TestHandler_RequestTimeoutFailsForExceededDuration(t *testing.T) {
 	rr := httptest.NewRecorder()
 
-	verbs := []string{"POST"}
+	verbs := []string{http.MethodPost}
 	for _, verb := range verbs {
 
 		body := "hello"
@@ -290,7 +290,7 @@ func TestHandler_RequestTimeoutFailsForExceededDuration(t *testing.T) {
 func TestHandler_StatusOKAllowed_ForWriteableVerbs(t *testing.T) {
 	rr := httptest.NewRecorder()
 
-	verbs := []string{"POST", "PUT", "UPDATE", "DELETE"}
+	verbs := []string{http.MethodPost, http.MethodPut, "UPDATE", http.MethodDelete}
 	for _, verb := range verbs {
 
 		body := "hello"
@@ -341,7 +341,7 @@ func TestHandler_StatusMethodNotAllowed_ForUnknown(t *testing.T) {
 func TestHandler_StatusOKForGETAndNoBody(t *testing.T) {
 	rr := httptest.NewRecorder()
 
-	req, err := http.NewRequest("GET", "/", nil)
+	req, err := http.NewRequest(http.MethodGet, "/", nil)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -370,7 +370,7 @@ func TestHealthHandler_SatusOK_LockFilePresent(t *testing.T) {
 		}
 	}
 
-	req, err := http.NewRequest("GET", "/_/health", nil)
+	req, err := http.NewRequest(http.MethodGet, "/_/health", nil)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -393,7 +393,7 @@ func TestHealthHandler_StatusInternalServerError_LockFileNotPresent(t *testing.T
 		}
 	}
 
-	req, err := http.NewRequest("GET", "/_/health", nil)
+	req, err := http.NewRequest(http.MethodGet, "/_/health", nil)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -409,7 +409,7 @@ func TestHealthHandler_StatusInternalServerError_LockFileNotPresent(t *testing.T
 func TestHealthHandler_SatusMethoNotAllowed_ForWriteableVerbs(t *testing.T) {
 	rr := httptest.NewRecorder()
 
-	verbs := []string{"POST", "PUT", "UPDATE", "DELETE"}
+	verbs := []string{http.MethodPost, http.MethodPut, "UPDATE", http.MethodDelete}
 
 	for _, verb := range verbs {
 		req, err := http.NewRequest(verb, "/_/health", nil)
-- 
GitLab