From 9dc2dfcbb22cc8fe828005c3e67c0ae5e0299d6a Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Sun, 17 Nov 2024 03:56:47 +0100 Subject: [PATCH] refactoring of code --- internal/helpers.go | 8 +++++++- internal/{ => metrics}/prometheus.go | 22 +++++++++++----------- internal/route.go | 15 ++++++++------- 3 files changed, 26 insertions(+), 19 deletions(-) rename internal/{ => metrics}/prometheus.go (75%) diff --git a/internal/helpers.go b/internal/helpers.go index 1b02d34..fb0ec4b 100644 --- a/internal/helpers.go +++ b/internal/helpers.go @@ -19,6 +19,7 @@ import ( "github.com/jkaninda/goma-gateway/pkg/logger" "github.com/jkaninda/goma-gateway/util" "golang.org/x/oauth2" + "io" "net/http" "time" ) @@ -72,7 +73,12 @@ func (oauth *OauthRulerMiddleware) getUserInfo(token *oauth2.Token) (UserInfo, e if err != nil { return UserInfo{}, err } - defer resp.Body.Close() + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + + } + }(resp.Body) // Parse the user info var userInfo UserInfo diff --git a/internal/prometheus.go b/internal/metrics/prometheus.go similarity index 75% rename from internal/prometheus.go rename to internal/metrics/prometheus.go index 9bc62c5..e888ba3 100644 --- a/internal/prometheus.go +++ b/internal/metrics/prometheus.go @@ -15,7 +15,7 @@ * */ -package pkg +package metrics import ( "github.com/gorilla/mux" @@ -26,11 +26,11 @@ import ( ) type PrometheusRoute struct { - name string - path string + Name string + Path string } -var totalRequests = prometheus.NewCounterVec( +var TotalRequests = prometheus.NewCounterVec( prometheus.CounterOpts{ Name: "http_requests_total", Help: "Number of get requests.", @@ -38,7 +38,7 @@ var totalRequests = prometheus.NewCounterVec( []string{"name", "path"}, ) -var responseStatus = prometheus.NewCounterVec( +var ResponseStatus = prometheus.NewCounterVec( prometheus.CounterOpts{ Name: "response_status", Help: "Status of HTTP response", @@ -46,22 +46,22 @@ var responseStatus = prometheus.NewCounterVec( []string{"status"}, ) -var httpDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{ +var HttpDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{ Name: "http_response_time_seconds", Help: "Duration of HTTP requests.", }, []string{"name", "path"}) -func (pr PrometheusRoute) prometheusMiddleware(next http.Handler) http.Handler { +func (pr PrometheusRoute) PrometheusMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - path := pr.path + path := pr.Path if len(path) == 0 { route := mux.CurrentRoute(r) path, _ = route.GetPathTemplate() } - timer := prometheus.NewTimer(httpDuration.WithLabelValues(pr.name, path)) + timer := prometheus.NewTimer(HttpDuration.WithLabelValues(pr.Name, path)) - responseStatus.WithLabelValues(strconv.Itoa(http.StatusOK)).Inc() - totalRequests.WithLabelValues(pr.name, path).Inc() + ResponseStatus.WithLabelValues(strconv.Itoa(http.StatusOK)).Inc() + TotalRequests.WithLabelValues(pr.Name, path).Inc() timer.ObserveDuration() next.ServeHTTP(w, r) diff --git a/internal/route.go b/internal/route.go index e9e22ec..419214e 100644 --- a/internal/route.go +++ b/internal/route.go @@ -17,6 +17,7 @@ limitations under the License. */ import ( "github.com/gorilla/mux" + "github.com/jkaninda/goma-gateway/internal/metrics" "github.com/jkaninda/goma-gateway/internal/middlewares" "github.com/jkaninda/goma-gateway/pkg/logger" "github.com/jkaninda/goma-gateway/util" @@ -26,9 +27,9 @@ import ( ) func init() { - _ = prometheus.Register(totalRequests) - _ = prometheus.Register(responseStatus) - _ = prometheus.Register(httpDuration) + _ = prometheus.Register(metrics.TotalRequests) + _ = prometheus.Register(metrics.ResponseStatus) + _ = prometheus.Register(metrics.HttpDuration) } // Initialize the routes @@ -265,12 +266,12 @@ func (gatewayServer GatewayServer) Initialize() *mux.Router { router.PathPrefix("").Handler(proxyRoute.ProxyHandler()) } if gateway.EnableMetrics { - pr := PrometheusRoute{ - name: route.Name, - path: route.Path, + pr := metrics.PrometheusRoute{ + Name: route.Name, + Path: route.Path, } // Prometheus endpoint - router.Use(pr.prometheusMiddleware) + router.Use(pr.PrometheusMiddleware) } // Apply route Error interceptor middlewares if len(route.InterceptErrors) != 0 {