(httpServer *echo.Echo, p FxHttpServerParam)
| 129 | } |
| 130 | |
| 131 | func 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"), |
no test coverage detected