go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers-sdk/v1/upstream/mvd/mvd.ranger.go (about)

     1  // Code generated by protoc-gen-rangerrpc version DO NOT EDIT.
     2  // source: mvd.proto
     3  
     4  package mvd
     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 AdvisoryScanner interface {
    22  	AnalyseAsset(context.Context, *AnalyseAssetRequest) (*VulnReport, error)
    23  	IsEol(context.Context, *Platform) (*PlatformEolInfo, error)
    24  }
    25  
    26  // client implementation
    27  
    28  type AdvisoryScannerClient struct {
    29  	ranger.Client
    30  	httpclient ranger.HTTPClient
    31  	prefix     string
    32  }
    33  
    34  func NewAdvisoryScannerClient(addr string, client ranger.HTTPClient, plugins ...ranger.ClientPlugin) (*AdvisoryScannerClient, error) {
    35  	base, err := url.Parse(ranger.SanitizeUrl(addr))
    36  	if err != nil {
    37  		return nil, err
    38  	}
    39  
    40  	u, err := url.Parse("./AdvisoryScanner")
    41  	if err != nil {
    42  		return nil, err
    43  	}
    44  
    45  	serviceClient := &AdvisoryScannerClient{
    46  		httpclient: client,
    47  		prefix:     base.ResolveReference(u).String(),
    48  	}
    49  	serviceClient.AddPlugins(plugins...)
    50  	return serviceClient, nil
    51  }
    52  func (c *AdvisoryScannerClient) AnalyseAsset(ctx context.Context, in *AnalyseAssetRequest) (*VulnReport, error) {
    53  	out := new(VulnReport)
    54  	err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/AnalyseAsset"}, ""), in, out)
    55  	return out, err
    56  }
    57  func (c *AdvisoryScannerClient) IsEol(ctx context.Context, in *Platform) (*PlatformEolInfo, error) {
    58  	out := new(PlatformEolInfo)
    59  	err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/IsEol"}, ""), in, out)
    60  	return out, err
    61  }
    62  
    63  // server implementation
    64  
    65  type AdvisoryScannerServerOption func(s *AdvisoryScannerServer)
    66  
    67  func WithUnknownFieldsForAdvisoryScannerServer() AdvisoryScannerServerOption {
    68  	return func(s *AdvisoryScannerServer) {
    69  		s.allowUnknownFields = true
    70  	}
    71  }
    72  
    73  func NewAdvisoryScannerServer(handler AdvisoryScanner, opts ...AdvisoryScannerServerOption) http.Handler {
    74  	srv := &AdvisoryScannerServer{
    75  		handler: handler,
    76  	}
    77  
    78  	for i := range opts {
    79  		opts[i](srv)
    80  	}
    81  
    82  	service := ranger.Service{
    83  		Name: "AdvisoryScanner",
    84  		Methods: map[string]ranger.Method{
    85  			"AnalyseAsset": srv.AnalyseAsset,
    86  			"IsEol":        srv.IsEol,
    87  		},
    88  	}
    89  	return ranger.NewRPCServer(&service)
    90  }
    91  
    92  type AdvisoryScannerServer struct {
    93  	handler            AdvisoryScanner
    94  	allowUnknownFields bool
    95  }
    96  
    97  func (p *AdvisoryScannerServer) AnalyseAsset(ctx context.Context, reqBytes *[]byte) (pb.Message, error) {
    98  	var req AnalyseAssetRequest
    99  	var err error
   100  
   101  	md, ok := metadata.FromIncomingContext(ctx)
   102  	if !ok {
   103  		return nil, errors.New("could not access header")
   104  	}
   105  
   106  	switch md.First("Content-Type") {
   107  	case "application/protobuf", "application/octet-stream", "application/grpc+proto":
   108  		err = pb.Unmarshal(*reqBytes, &req)
   109  	default:
   110  		// handle case of empty object
   111  		if len(*reqBytes) > 0 {
   112  			err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req)
   113  		}
   114  	}
   115  
   116  	if err != nil {
   117  		return nil, err
   118  	}
   119  	return p.handler.AnalyseAsset(ctx, &req)
   120  }
   121  func (p *AdvisoryScannerServer) IsEol(ctx context.Context, reqBytes *[]byte) (pb.Message, error) {
   122  	var req Platform
   123  	var err error
   124  
   125  	md, ok := metadata.FromIncomingContext(ctx)
   126  	if !ok {
   127  		return nil, errors.New("could not access header")
   128  	}
   129  
   130  	switch md.First("Content-Type") {
   131  	case "application/protobuf", "application/octet-stream", "application/grpc+proto":
   132  		err = pb.Unmarshal(*reqBytes, &req)
   133  	default:
   134  		// handle case of empty object
   135  		if len(*reqBytes) > 0 {
   136  			err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req)
   137  		}
   138  	}
   139  
   140  	if err != nil {
   141  		return nil, err
   142  	}
   143  	return p.handler.IsEol(ctx, &req)
   144  }