package api

import (
	"net/http"
	"strings"
)

// Route represents a single API route
type Route struct {
	Method  string
	Path    string
	Handler http.HandlerFunc
}

// Router is a simple HTTP router for the KAT API
type Router struct {
	routes []Route
}

// NewRouter creates a new router instance
func NewRouter() *Router {
	return &Router{
		routes: []Route{},
	}
}

// HandleFunc registers a new route with the router
func (r *Router) HandleFunc(method, path string, handler http.HandlerFunc) {
	r.routes = append(r.routes, Route{
		Method:  strings.ToUpper(method),
		Path:    path,
		Handler: handler,
	})
}

// ServeHTTP implements the http.Handler interface
func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) {
	// Find matching route
	for _, route := range r.routes {
		if route.Method == req.Method && route.Path == req.URL.Path {
			route.Handler(w, req)
			return
		}
	}

	// No route matched
	http.NotFound(w, req)
}