@@ -33,40 +33,51 @@ import (
3333
3434// CreateHandler creates an http.Handler for the PromQL langserver REST API.
3535//
36- // Expects a prometheus Client as a second argument.
36+ // If metadata is fetched from a remote Prometheus, the metadataService
37+ // implementation from the promql-langserver/prometheus package can be used,
38+ // otherwise you need to provide your own implementation of the interface.
39+ //
3740// The provided Logger should be synchronized.
3841func CreateHandler (ctx context.Context , metadataService promClient.MetadataService , logger log.Logger ) (http.Handler , error ) {
39- return CreateInstHandler (ctx , metadataService , nil , logger )
42+ return createHandler (ctx , metadataService , logger , false )
4043}
4144
4245// CreateInstHandler creates an instrumented http.Handler for the PromQL langserver REST API.
43- // In addition to the endpoints created with CreateHandler, a /metrics endpoint is provided.
46+ // In addition to the endpoints created with CreateHandler, a /metrics endpoint // is provided.
47+ //
48+ // If you use the REST API with some middleware that already provides its own
49+ // instrumentation, use CreateHandler instead.
4450//
45- // If you use the REST API with some middleware that already provides its own instrumentation,
46- // use CreateHandler instead.
51+ // If metadata is fetched from a remote Prometheus, the metadataService
52+ // implementation from the promql-langserver/prometheus package can be used,
53+ // otherwise you need to provide your own implementation of the interface.
4754//
48- // Expects a prometheus Client as a second argument and a Registry as third argument.
4955// The provided Logger should be synchronized.
50- func CreateInstHandler (ctx context.Context , metadataService promClient.MetadataService , r * prometheus.Registry , logger log.Logger ) (http.Handler , error ) {
56+ func CreateInstHandler (ctx context.Context , metadataService promClient.MetadataService , logger log.Logger ) (http.Handler , error ) {
57+ return createHandler (ctx , metadataService , logger , true )
58+ }
59+ func createHandler (ctx context.Context , metadataService promClient.MetadataService , logger log.Logger , metricsEnpoint bool ) (http.Handler , error ) {
5160 lgs , err := langserver .CreateHeadlessServer (ctx , metadataService , logger )
5261 if err != nil {
5362 return nil , err
5463 }
5564
5665 ls := & langserverHandler {langserver : lgs }
5766 ls .m = make (map [string ]http.Handler )
58- ls .createHandlers (r )
67+ ls .createHandlers (metricsEnpoint )
5968
6069 return ls , nil
6170}
6271
63- func (h * langserverHandler ) createHandlers (r * prometheus. Registry ) {
72+ func (h * langserverHandler ) createHandlers (metricsEndpoint bool ) {
6473 diagnostics := newSubHandler (h , diagnosticsHandler )
6574 completion := newSubHandler (h , completionHandler )
6675 hover := newSubHandler (h , hoverHandler )
6776 signatureHelp := newSubHandler (h , signatureHelpHandler )
6877
69- if r != nil {
78+ if metricsEndpoint {
79+ r := prometheus .NewRegistry ()
80+
7081 httpRequestsTotal := prometheus .NewCounterVec (prometheus.CounterOpts {
7182 Name : "http_requests_total" ,
7283 Help : "Count of all HTTP requests" ,
0 commit comments