github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/querier/queryrange/extensions.go (about) 1 // This file includes manual changes done on top of autogenerated queryrange.pb.go from .proto file. 2 3 package queryrange 4 5 import "github.com/grafana/loki/pkg/querier/queryrange/queryrangebase" 6 7 // To satisfy queryrange.Response interface(https://github.com/cortexproject/cortex/blob/21bad57b346c730d684d6d0205efef133422ab28/pkg/querier/queryrange/query_range.go#L88) 8 // we need to have following method as well on response types: 9 // GetHeaders() []*queryrange.PrometheusResponseHeader. 10 // This could have been done by adding "Headers" field with custom type in proto definition for various Response types which doesn't work because 11 // gogoproto doesn't generate getters for custom types so adding them here. 12 // See issue https://github.com/gogo/protobuf/issues/477 for more details. 13 // It also has issue of generating slices without pointer to the custom type for Repeated customtype fields, see https://github.com/gogo/protobuf/issues/478 14 // which is why we also have to do conversion from non-pointer to pointer type. 15 16 func (m *LokiLabelNamesResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader { 17 if m != nil { 18 return convertPrometheusResponseHeadersToPointers(m.Headers) 19 } 20 return nil 21 } 22 23 func (m *LokiSeriesResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader { 24 if m != nil { 25 return convertPrometheusResponseHeadersToPointers(m.Headers) 26 } 27 return nil 28 } 29 30 func (m *LokiPromResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader { 31 if m != nil { 32 return m.Response.GetHeaders() 33 } 34 return nil 35 } 36 37 func (m *LokiResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader { 38 if m != nil { 39 return convertPrometheusResponseHeadersToPointers(m.Headers) 40 } 41 return nil 42 } 43 44 func convertPrometheusResponseHeadersToPointers(h []queryrangebase.PrometheusResponseHeader) []*queryrangebase.PrometheusResponseHeader { 45 if h == nil { 46 return nil 47 } 48 49 resp := make([]*queryrangebase.PrometheusResponseHeader, len(h)) 50 for i := range h { 51 resp[i] = &h[i] 52 } 53 54 return resp 55 } 56 57 // GetHeaders returns the HTTP headers in the response. 58 func (m *IndexStatsResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader { 59 if m != nil { 60 return convertPrometheusResponseHeadersToPointers(m.Headers) 61 } 62 return nil 63 }