go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers-sdk/v1/upstream/health/health.ranger.go (about) 1 // Code generated by protoc-gen-rangerrpc version DO NOT EDIT. 2 // source: health.proto 3 4 package health 5 6 import ( 7 "context" 8 "errors" 9 "net/http" 10 "net/url" 11 "strings" 12 13 ranger "go.mondoo.com/ranger-rpc" 14 "go.mondoo.com/ranger-rpc/metadata" 15 jsonpb "google.golang.org/protobuf/encoding/protojson" 16 pb "google.golang.org/protobuf/proto" 17 ) 18 19 // service interface definition 20 21 type Health interface { 22 Check(context.Context, *HealthCheckRequest) (*HealthCheckResponse, error) 23 } 24 25 // client implementation 26 27 type HealthClient struct { 28 ranger.Client 29 httpclient ranger.HTTPClient 30 prefix string 31 } 32 33 func NewHealthClient(addr string, client ranger.HTTPClient, plugins ...ranger.ClientPlugin) (*HealthClient, error) { 34 base, err := url.Parse(ranger.SanitizeUrl(addr)) 35 if err != nil { 36 return nil, err 37 } 38 39 u, err := url.Parse("./Health") 40 if err != nil { 41 return nil, err 42 } 43 44 serviceClient := &HealthClient{ 45 httpclient: client, 46 prefix: base.ResolveReference(u).String(), 47 } 48 serviceClient.AddPlugins(plugins...) 49 return serviceClient, nil 50 } 51 func (c *HealthClient) Check(ctx context.Context, in *HealthCheckRequest) (*HealthCheckResponse, error) { 52 out := new(HealthCheckResponse) 53 err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/Check"}, ""), in, out) 54 return out, err 55 } 56 57 // server implementation 58 59 type HealthServerOption func(s *HealthServer) 60 61 func WithUnknownFieldsForHealthServer() HealthServerOption { 62 return func(s *HealthServer) { 63 s.allowUnknownFields = true 64 } 65 } 66 67 func NewHealthServer(handler Health, opts ...HealthServerOption) http.Handler { 68 srv := &HealthServer{ 69 handler: handler, 70 } 71 72 for i := range opts { 73 opts[i](srv) 74 } 75 76 service := ranger.Service{ 77 Name: "Health", 78 Methods: map[string]ranger.Method{ 79 "Check": srv.Check, 80 }, 81 } 82 return ranger.NewRPCServer(&service) 83 } 84 85 type HealthServer struct { 86 handler Health 87 allowUnknownFields bool 88 } 89 90 func (p *HealthServer) Check(ctx context.Context, reqBytes *[]byte) (pb.Message, error) { 91 var req HealthCheckRequest 92 var err error 93 94 md, ok := metadata.FromIncomingContext(ctx) 95 if !ok { 96 return nil, errors.New("could not access header") 97 } 98 99 switch md.First("Content-Type") { 100 case "application/protobuf", "application/octet-stream", "application/grpc+proto": 101 err = pb.Unmarshal(*reqBytes, &req) 102 default: 103 // handle case of empty object 104 if len(*reqBytes) > 0 { 105 err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req) 106 } 107 } 108 109 if err != nil { 110 return nil, err 111 } 112 return p.handler.Check(ctx, &req) 113 }