Skip to content
Snippets Groups Projects
04-request-metrics.go 575 B
Newer Older
package _routers

import (
	"net/http"

	"github.com/prometheus/client_golang/prometheus"
	"github.com/t2bot/matrix-media-repo/metrics"
)

type MetricsRequestRouter struct {
	next http.Handler
}

func NewMetricsRequestRouter(next http.Handler) *MetricsRequestRouter {
	return &MetricsRequestRouter{next: next}
}

func (m *MetricsRequestRouter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	metrics.HttpRequests.With(prometheus.Labels{
		"host":   r.Host,
		"action": GetActionName(r),
		"method": r.Method,
	}).Inc()

	if m.next != nil {
		m.next.ServeHTTP(w, r)
	}
}