package app import ( "net/http" "os" "github.com/rs/zerolog" "github.com/xlgmokha/x/pkg/env" "github.com/xlgmokha/x/pkg/ioc" "github.com/xlgmokha/x/pkg/log" "github.com/xlgmokha/x/pkg/mapper" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/authzd.git/pkg/rpc" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/controllers/dashboard" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/controllers/sparkles" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/db" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/web" ) func init() { ioc.RegisterSingleton[*zerolog.Logger](ioc.Default, func() *zerolog.Logger { return log.New(os.Stdout, log.Fields{"app": "sparkled"}) }) ioc.RegisterSingleton[domain.Repository[*domain.Sparkle]](ioc.Default, func() domain.Repository[*domain.Sparkle] { return db.NewRepository[*domain.Sparkle]() }) ioc.RegisterSingleton[*http.ServeMux](ioc.Default, func() *http.ServeMux { return http.NewServeMux() }) ioc.Register[*dashboard.Controller](ioc.Default, func() *dashboard.Controller { return dashboard.New() }) ioc.Register[*sparkles.Controller](ioc.Default, func() *sparkles.Controller { return sparkles.New(ioc.MustResolve[domain.Repository[*domain.Sparkle]](ioc.Default)) }) ioc.RegisterSingleton[*http.Client](ioc.Default, func() *http.Client { return &http.Client{ Transport: &web.Transport{ Logger: ioc.MustResolve[*zerolog.Logger](ioc.Default), }, } }) ioc.Register[rpc.Ability](ioc.Default, func() rpc.Ability { return rpc.NewAbilityProtobufClient( env.Fetch("AUTHZD_HOST", ""), ioc.MustResolve[*http.Client](ioc.Default), ) }) http.DefaultClient = ioc.MustResolve[*http.Client](ioc.Default) mapper.Register[*http.Request, log.Fields](func(r *http.Request) log.Fields { return log.Fields{ "host": r.URL.Host, "method": r.Method, "path": r.URL.Path, "remote_host": r.RemoteAddr, "request_id": r.Header.Get("x-request-id"), } }) }