Initial commit: Open sourcing all of the Maple Open Technologies code.

This commit is contained in:
Bartlomiej Mika 2025-12-02 14:33:08 -05:00
commit 755d54a99d
2010 changed files with 448675 additions and 0 deletions

View file

@ -0,0 +1,92 @@
// codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/pkg/observability/routes.go
package observability
import (
"net/http"
"go.uber.org/zap"
)
// HealthRoute provides detailed health check endpoint
type HealthRoute struct {
checker *HealthChecker
logger *zap.Logger
}
func NewHealthRoute(checker *HealthChecker, logger *zap.Logger) *HealthRoute {
return &HealthRoute{
checker: checker,
logger: logger,
}
}
func (h *HealthRoute) ServeHTTP(w http.ResponseWriter, r *http.Request) {
h.checker.HealthHandler()(w, r)
}
func (h *HealthRoute) Pattern() string {
return "/health"
}
// ReadinessRoute provides readiness probe endpoint
type ReadinessRoute struct {
checker *HealthChecker
logger *zap.Logger
}
func NewReadinessRoute(checker *HealthChecker, logger *zap.Logger) *ReadinessRoute {
return &ReadinessRoute{
checker: checker,
logger: logger,
}
}
func (r *ReadinessRoute) ServeHTTP(w http.ResponseWriter, req *http.Request) {
r.checker.ReadinessHandler()(w, req)
}
func (r *ReadinessRoute) Pattern() string {
return "/health/ready"
}
// LivenessRoute provides liveness probe endpoint
type LivenessRoute struct {
checker *HealthChecker
logger *zap.Logger
}
func NewLivenessRoute(checker *HealthChecker, logger *zap.Logger) *LivenessRoute {
return &LivenessRoute{
checker: checker,
logger: logger,
}
}
func (l *LivenessRoute) ServeHTTP(w http.ResponseWriter, r *http.Request) {
l.checker.LivenessHandler()(w, r)
}
func (l *LivenessRoute) Pattern() string {
return "/health/live"
}
// MetricsRoute provides metrics endpoint
type MetricsRoute struct {
server *MetricsServer
logger *zap.Logger
}
func NewMetricsRoute(server *MetricsServer, logger *zap.Logger) *MetricsRoute {
return &MetricsRoute{
server: server,
logger: logger,
}
}
func (m *MetricsRoute) ServeHTTP(w http.ResponseWriter, r *http.Request) {
m.server.Handler()(w, r)
}
func (m *MetricsRoute) Pattern() string {
return "/metrics"
}