39 lines
1.1 KiB
Go
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
|
|
}
|