func MakeHTTPHandler()

in PetAdoptions/cdk/pet_stack/resources/microservices/payforadoption-go/payforadoption/transport.go [19:71]


func MakeHTTPHandler(s Service, logger log.Logger) http.Handler {
	r := mux.NewRouter()
	e := MakeEndpoints(s)
	options := []httptransport.ServerOption{
		httptransport.ServerErrorHandler(transport.NewLogErrorHandler(logger)),
		httptransport.ServerErrorEncoder(encodeError),
		httptransport.ServerFinalizer(loggingMiddleware),
	}

	r.Methods("GET").Path("/health/status").Handler(httptransport.NewServer(
		e.HealthCheckEndpoint,
		decodeEmptyRequest,
		encodeEmptyResponse,
		options...,
	))

	// using xray as wrapper for http.Handler
	r.Methods("POST").Path("/api/home/completeadoption").Handler(
		xray.Handler(
			xray.NewFixedSegmentNamer("payforadoption"),
			httptransport.NewServer(
				e.CompleteAdoptionEndpoint,
				decodeCompleteAdoptionRequest,
				encodeResponse,
				options...,
			),
		),
	)
	// using xray as wrapper for http.Handler
	r.Methods("POST").Path("/api/home/cleanupadoptions").Handler(
		xray.Handler(
			xray.NewFixedSegmentNamer("payforadoption"),
			httptransport.NewServer(
				e.CleanupAdoptionsEndpoint,
				decodeEmptyRequest,
				encodeEmptyResponse,
				options...,
			),
		),
	)

	// Trigger DDB seeding
	r.Methods("POST").Path("/api/home/triggerseeding").Handler(httptransport.NewServer(
		e.TriggerSeedingEndpoint,
		decodeEmptyRequest,
		encodeEmptyResponse,
		options...,
	))

	r.Methods("GET").Path("/metrics").Handler(promhttp.Handler())

	return r
}