MCPcopy Index your code
hub / github.com/cortexproject/cortex / New

Function New

pkg/api/api.go:147–186  ·  view source on GitHub ↗
(cfg Config, serverCfg server.Config, s *server.Server, logger log.Logger)

Source from the content-addressed store, hash-verified

145}
146
147func New(cfg Config, serverCfg server.Config, s *server.Server, logger log.Logger) (*API, error) {
148 // Ensure the encoded path is used. Required for the rules API
149 s.HTTP.UseEncodedPath()
150
151 var sourceIPs *middleware.SourceIPExtractor
152 if serverCfg.LogSourceIPs {
153 var err error
154 sourceIPs, err = middleware.NewSourceIPs(serverCfg.LogSourceIPsHeader, serverCfg.LogSourceIPsRegex)
155 if err != nil {
156 // This should have already been caught in the Server creation
157 return nil, err
158 }
159 }
160
161 corsOrigin, err := compileCORSRegexString(cfg.corsRegexString)
162 if err != nil {
163 return nil, err
164 }
165
166 api := &API{
167 cfg: cfg,
168 AuthMiddleware: cfg.HTTPAuthMiddleware,
169 server: s,
170 logger: logger,
171 sourceIPs: sourceIPs,
172 indexPage: newIndexPageContent(),
173 corsOrigin: corsOrigin,
174 }
175
176 // If no authentication middleware is present in the config, use the default authentication middleware.
177 if cfg.HTTPAuthMiddleware == nil {
178 api.AuthMiddleware = middleware.AuthenticateUser
179 }
180 api.HTTPHeaderMiddleware = &HTTPHeaderMiddleware{
181 TargetHeaders: cfg.HTTPRequestHeadersToLog,
182 RequestIdHeader: cfg.RequestIdHeader,
183 }
184
185 return api, nil
186}
187
188// RegisterRoute registers a single route enforcing HTTP methods. A single
189// route is expected to be specific about which HTTP methods are supported.

Calls 2

compileCORSRegexStringFunction · 0.85
newIndexPageContentFunction · 0.85