2025-05-17 11:36:26 -04:00

39 lines
1.1 KiB
Go

package api
import (
"net/http"
"github.com/gorilla/mux"
)
func SetupRouter(s *APIServer) *mux.Router {
r := mux.NewRouter()
// Aplicar middleware de logging a todas las rutas
r.Use(requestLoggerMiddleware)
// Definir rutas
api := r.PathPrefix("/api").Subrouter()
facturas := api.PathPrefix("/facturas").Subrouter()
facturas.HandleFunc("/enviar", s.EnviarFacturaHandler).Methods("POST")
facturas.HandleFunc("/revertir", s.RevertirFacturaHandler).Methods("POST")
facturas.HandleFunc("/anular", s.AnularFacturaHandler).Methods("POST")
facturas.HandleFunc("/{id}", s.ConsultarFacturaHandler).Methods("GET")
dlq := api.PathPrefix("/dlq").Subrouter()
dlq.HandleFunc("/reprocesar", s.ReprocesarDLQHandler).Methods("POST")
// Middleware para manejar métodos no permitidos
r.MethodNotAllowedHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
writeError(w, ErrInvalidContentType)
})
// Handler para rutas no encontradas
r.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
writeError(w, ErrFacturaNotFound)
})
return r
}