package httputil

import (
	"github.com/prometheus/client_golang/prometheus"
)

func init() {
	prometheus.MustRegister(
		mRequestTotalTime,
		mRequestResponseTime,
		mRequestTLSHandshakeTime,
		mRequestTCPConnTime,
		mRequestConnTime,
		mRequestDNSLookupTime,
	)
}

const (
	ns = "http_client"
)

var (
	labelKeys = []string{"host", "method", "path", "status_code"}
)

var (
	mRequestTotalTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: ns,
		Name:      "request_time_seconds",
		Help:      "resty client request total time",
	}, labelKeys)

	mRequestResponseTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: ns,
		Name:      "request_response_time_seconds",
		Help:      "resty client request response time",
	}, labelKeys)

	mRequestTLSHandshakeTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: ns,
		Name:      "request_tls_handshake_time_seconds",
		Help:      "resty client request tls handshake time",
	}, labelKeys)

	mRequestTCPConnTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: ns,
		Name:      "request_tcp_conn_time_seconds",
		Help:      "resty client request tcp connection time",
	}, labelKeys)

	mRequestConnTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: ns,
		Name:      "request_conn_time_seconds",
		Help:      "resty client request connection time",
	}, labelKeys)

	mRequestDNSLookupTime = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: ns,
		Name:      "request_dns_lookup_time_seconds",
		Help:      "resty client request dns lookup time",
	}, labelKeys)
)
