41 lines
1.3 KiB
Go
41 lines
1.3 KiB
Go
package event_ingress
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/go-admin-team/go-admin-core/sdk"
|
|
|
|
"go-admin/app/bell/integration/machine_identity"
|
|
)
|
|
|
|
func RegisterRuntime(engine *gin.Engine) error {
|
|
enabled := strings.EqualFold(strings.TrimSpace(os.Getenv("BELL_EVENT_INGRESS_ENABLED")), "true")
|
|
if !enabled {
|
|
return nil
|
|
}
|
|
db := sdk.Runtime.GetDbByKey("")
|
|
if db == nil {
|
|
return fmt.Errorf("Bell event ingress database is unavailable")
|
|
}
|
|
if !db.Migrator().HasTable(&ReplayToken{}) || !db.Migrator().HasTable(&EvidenceStatus{}) {
|
|
return fmt.Errorf("Bell event ingress migration is required")
|
|
}
|
|
registry, err := machine_identity.LoadRegistry(os.Getenv("BELL_MACHINE_PRINCIPAL_REGISTRY"), "yovision-bell")
|
|
if err != nil {
|
|
return fmt.Errorf("load Bell machine identity registry: %w", err)
|
|
}
|
|
var resolver EvidenceRefresher
|
|
if strings.EqualFold(strings.TrimSpace(os.Getenv("BELL_EVIDENCE_RESOLVER_ENABLED")), "true") {
|
|
resolver, err = LoadEvidenceClient(os.Getenv)
|
|
if err != nil {
|
|
return fmt.Errorf("load Bell evidence resolver: %w", err)
|
|
}
|
|
}
|
|
handler := Handler{DB: db, Enabled: true, Resolver: resolver, Verifier: machine_identity.Verifier{Registry: registry, Replay: PersistentReplayStore{DB: db}}}
|
|
engine.POST("/v1/events", handler.Post)
|
|
return nil
|
|
}
|