40 lines
		
	
	
		
			888 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			888 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package http
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"net/http"
 | 
						|
 | 
						|
	"mind/internal/config"
 | 
						|
	"mind/internal/glue"
 | 
						|
	"mind/internal/logx"
 | 
						|
)
 | 
						|
 | 
						|
type server struct {
 | 
						|
	log  *logx.Logger
 | 
						|
	cfg  config.Config
 | 
						|
	glue *glue.Glue
 | 
						|
}
 | 
						|
 | 
						|
func NewRouter(l *logx.Logger, c config.Config, g *glue.Glue) http.Handler {
 | 
						|
	s := &server{log: l, cfg: c, glue: g}
 | 
						|
	mux := http.NewServeMux()
 | 
						|
	mux.HandleFunc("/healthz", s.health)
 | 
						|
	mux.HandleFunc("/conversations", s.conversations)
 | 
						|
	mux.HandleFunc("/branches", s.branches)
 | 
						|
	mux.HandleFunc("/completion", s.completion)
 | 
						|
	mux.HandleFunc("/linearize", s.linearize)
 | 
						|
	return withCommon(mux)
 | 
						|
}
 | 
						|
 | 
						|
func (s *server) health(w http.ResponseWriter, r *http.Request) {
 | 
						|
	w.WriteHeader(200)
 | 
						|
	_, _ = w.Write([]byte("ok"))
 | 
						|
}
 | 
						|
 | 
						|
// Helpers
 | 
						|
func writeJSON(w http.ResponseWriter, code int, v any) {
 | 
						|
	w.Header().Set("Content-Type", "application/json")
 | 
						|
	w.WriteHeader(code)
 | 
						|
	_ = json.NewEncoder(w).Encode(v)
 | 
						|
}
 |