|
@@ -15,6 +15,28 @@ import (
|
|
|
"code.osinet.fr/fgm/lbc/web"
|
|
|
)
|
|
|
|
|
|
+// containers wraps an [izidic.Container] to provide typed services accessors,
|
|
|
+// obviating the need to type-assert calls to Service.
|
|
|
+type container struct {
|
|
|
+ *izidic.Container
|
|
|
+}
|
|
|
+
|
|
|
+func (c *container) Config() *web.Config {
|
|
|
+ return c.MustService("config").(*web.Config)
|
|
|
+}
|
|
|
+
|
|
|
+func (c *container) Logger() *log.Logger {
|
|
|
+ return c.MustService("logger").(*log.Logger)
|
|
|
+}
|
|
|
+
|
|
|
+func (c *container) Stats() *web.Stats {
|
|
|
+ return c.MustService("stats").(*web.Stats)
|
|
|
+}
|
|
|
+
|
|
|
+func (c *container) Web() *web.Server {
|
|
|
+ return c.MustService("web").(*web.Server)
|
|
|
+}
|
|
|
+
|
|
|
// 12-factor/XI: log to stdout.
|
|
|
func loggerService(dic *izidic.Container) (any, error) {
|
|
|
sw, err := dic.Param("writer")
|
|
@@ -66,16 +88,12 @@ func statsService(dic *izidic.Container) (any, error) {
|
|
|
}
|
|
|
|
|
|
func webService(dic *izidic.Container) (any, error) {
|
|
|
- logger := dic.MustService("logger").(*log.Logger)
|
|
|
- config := dic.MustService("config").(*web.Config)
|
|
|
- stats := dic.MustService("stats").(*web.Stats)
|
|
|
-
|
|
|
- ctx := context.Background()
|
|
|
+ wd := container{dic}
|
|
|
return &web.Server{
|
|
|
- BaseContext: ctx,
|
|
|
- Config: config,
|
|
|
- Logger: logger,
|
|
|
- Stats: stats,
|
|
|
+ BaseContext: context.Background(),
|
|
|
+ Config: wd.Config(),
|
|
|
+ Logger: wd.Logger(),
|
|
|
+ Stats: wd.Stats(),
|
|
|
}, nil
|
|
|
}
|
|
|
|