func CreateUrlHandler(w http.ResponseWriter, r *http.Request) {
	tempVar := middlewares.GetUrlFromReq(w, r)
	shortenedUrl := service.CreateShortenedUrl(tempVar.UrlValue)
	fmt.Fprintf(w, "Shortened Url: %s ", shortenedUrl)
}
CreateUrlHandler - created new shortened Url
package handlers
import (
	"fmt"
	"goRubu/middlewares"
	service "goRubu/services"
	"net/http"
	"strconv"
	"time"
	"github.com/gorilla/mux"
	"github.com/prometheus/client_golang/prometheus"
	"github.com/prometheus/client_golang/prometheus/promauto"
	"github.com/prometheus/client_golang/prometheus/promhttp"
)
type HistPrometheus struct {
	histogram *prometheus.HistogramVec
}
func (histProme *HistPrometheus) Populate() {
	histProme.histogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Name:    "http_durations_histogram_seconds",
		Help:    "HTTP request latency distributions.",
		Buckets: prometheus.ExponentialBuckets(0.0001, 1.5, 36),
	}, []string{"total_time_taken", "controller", "action"})
	prometheus.MustRegister(histProme.histogram)
}
func recordMetrics() {
	reqProcessed.Inc()
}
var (
	reqProcessed = promauto.NewCounter(prometheus.CounterOpts{
		Name: "total_requests",
		Help: "The total number of Incoming requests",
	})
)
func FloatToString(inputNum float64) string {
	return strconv.FormatFloat(inputNum, 'f', 6, 64)
}
func (histProme *HistPrometheus) PrometheusMonitoring(h http.Handler) http.Handler {
	return http.HandlerFunc(
		func(w http.ResponseWriter, r *http.Request) {
			hist2 := histProme.histogram
			recordMetrics()
			t1 := time.Now()
			h.ServeHTTP(w, r)
			t2 := time.Now()
			hist2.WithLabelValues(
				FloatToString(t2.Sub(t1).Seconds()),  
				r.URL.String(),                       
				r.Method).Observe(float64(time.Since(t1)) / float64(time.Second))
		})
}
func Hellohandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello. Go is an Awesome Language")
	time.Sleep(5 * time.Second)
}