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)
|
|
}
|