github.com/mikejeuga/temperature-converter@v0.0.0-20220721135550-2cf6fcec7145/src/internal/adapters/transport/server/server.go (about)

     1  package server
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/gorilla/mux"
     6  	"github.com/mikejeuga/temperature-converter/src/internal/adapters/transport/server/handlers"
     7  	"github.com/mikejeuga/temperature-converter/src/internal/domain"
     8  	"net/http"
     9  )
    10  
    11  type Server struct {
    12  	temperatureHandler handlers.ConversionHandler
    13  }
    14  
    15  func NewServer() *http.Server {
    16  
    17  	converter := domain.NewConverter(domain.ConvertCtoF, domain.ConvertFtoC)
    18  	conversionHandler := handlers.NewConversionHandler(converter)
    19  	s := &Server{temperatureHandler: *conversionHandler}
    20  
    21  	router := mux.NewRouter()
    22  
    23  	router.HandleFunc("/", s.Home)
    24  	router.HandleFunc("/to-fahrenheit/{temp}", s.temperatureHandler.ConvertCtoF)
    25  	router.HandleFunc("/to-celsius/{temp}", s.temperatureHandler.ConvertFtoC)
    26  
    27  	return &http.Server{
    28  		Addr:    ":8069",
    29  		Handler: router,
    30  	}
    31  }
    32  
    33  func (s *Server) Home(w http.ResponseWriter, r *http.Request) {
    34  	fmt.Fprint(w, "Server is Healthy, the temperature seems perfect!")
    35  }