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  }