MCPcopy Create free account
hub / github.com/ankorstore/yokai / withDefaultMiddlewares

Function withDefaultMiddlewares

fxhttpserver/module.go:131–201  ·  view source on GitHub ↗
(httpServer *echo.Echo, p FxHttpServerParam)

Source from the content-addressed store, hash-verified

129}
130
131func withDefaultMiddlewares(httpServer *echo.Echo, p FxHttpServerParam) *echo.Echo {
132 // request id middleware
133 httpServer.Use(httpservermiddleware.RequestIdMiddlewareWithConfig(
134 httpservermiddleware.RequestIdMiddlewareConfig{
135 Generator: p.Generator,
136 },
137 ))
138
139 // request tracer middleware
140 if p.Config.GetBool("modules.http.server.trace.enabled") {
141 httpServer.Use(httpservermiddleware.RequestTracerMiddlewareWithConfig(
142 p.Config.AppName(),
143 httpservermiddleware.RequestTracerMiddlewareConfig{
144 TracerProvider: httpserver.AnnotateTracerProvider(p.TracerProvider),
145 RequestUriPrefixesToExclude: p.Config.GetStringSlice("modules.http.server.trace.exclude"),
146 },
147 ))
148 }
149
150 // request logger middleware
151 requestHeadersToLog := map[string]string{
152 httpservermiddleware.HeaderXRequestId: httpservermiddleware.LogFieldRequestId,
153 }
154
155 for headerName, fieldName := range p.Config.GetStringMapString("modules.http.server.log.headers") {
156 requestHeadersToLog[headerName] = fieldName
157 }
158
159 httpServer.Use(httpservermiddleware.RequestLoggerMiddlewareWithConfig(
160 httpservermiddleware.RequestLoggerMiddlewareConfig{
161 RequestHeadersToLog: requestHeadersToLog,
162 RequestUriPrefixesToExclude: p.Config.GetStringSlice("modules.http.server.log.exclude"),
163 LogLevelFromResponseOrErrorCode: p.Config.GetBool("modules.http.server.log.level_from_response"),
164 },
165 ))
166
167 // request metrics middleware
168 if p.Config.GetBool("modules.http.server.metrics.collect.enabled") {
169 namespace := Sanitize(p.Config.GetString("modules.http.server.metrics.collect.namespace"))
170 subsystem := Sanitize(p.Config.GetString("modules.http.server.metrics.collect.subsystem"))
171
172 var buckets []float64
173 if bucketsConfig := p.Config.GetString("modules.http.server.metrics.buckets"); bucketsConfig != "" {
174 for _, s := range Split(bucketsConfig) {
175 f, err := strconv.ParseFloat(s, 64)
176 if err == nil {
177 buckets = append(buckets, f)
178 }
179 }
180 }
181
182 metricsMiddlewareConfig := httpservermiddleware.RequestMetricsMiddlewareConfig{
183 Registry: p.MetricsRegistry,
184 Namespace: namespace,
185 Subsystem: subsystem,
186 Buckets: buckets,
187 NormalizeRequestPath: p.Config.GetBool("modules.http.server.metrics.normalize.request_path"),
188 NormalizeResponseStatus: p.Config.GetBool("modules.http.server.metrics.normalize.response_status"),

Callers 1

NewFxHttpServerFunction · 0.85

Calls 3

SanitizeFunction · 0.70
SplitFunction · 0.70
AppNameMethod · 0.45

Tested by

no test coverage detected