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

     1  // Code generated by protoc-gen-rangerrpc version DO NOT EDIT.
     2  // source: upstream.proto
     3  
     4  package upstream
     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 AgentManager interface {
    22  	RegisterAgent(context.Context, *AgentRegistrationRequest) (*AgentRegistrationConfirmation, error)
    23  	UnRegisterAgent(context.Context, *Mrn) (*Confirmation, error)
    24  	PingPong(context.Context, *Ping) (*Pong, error)
    25  }
    26  
    27  // client implementation
    28  
    29  type AgentManagerClient struct {
    30  	ranger.Client
    31  	httpclient ranger.HTTPClient
    32  	prefix     string
    33  }
    34  
    35  func NewAgentManagerClient(addr string, client ranger.HTTPClient, plugins ...ranger.ClientPlugin) (*AgentManagerClient, error) {
    36  	base, err := url.Parse(ranger.SanitizeUrl(addr))
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  
    41  	u, err := url.Parse("./AgentManager")
    42  	if err != nil {
    43  		return nil, err
    44  	}
    45  
    46  	serviceClient := &AgentManagerClient{
    47  		httpclient: client,
    48  		prefix:     base.ResolveReference(u).String(),
    49  	}
    50  	serviceClient.AddPlugins(plugins...)
    51  	return serviceClient, nil
    52  }
    53  func (c *AgentManagerClient) RegisterAgent(ctx context.Context, in *AgentRegistrationRequest) (*AgentRegistrationConfirmation, error) {
    54  	out := new(AgentRegistrationConfirmation)
    55  	err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/RegisterAgent"}, ""), in, out)
    56  	return out, err
    57  }
    58  func (c *AgentManagerClient) UnRegisterAgent(ctx context.Context, in *Mrn) (*Confirmation, error) {
    59  	out := new(Confirmation)
    60  	err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/UnRegisterAgent"}, ""), in, out)
    61  	return out, err
    62  }
    63  func (c *AgentManagerClient) PingPong(ctx context.Context, in *Ping) (*Pong, error) {
    64  	out := new(Pong)
    65  	err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/PingPong"}, ""), in, out)
    66  	return out, err
    67  }
    68  
    69  // server implementation
    70  
    71  type AgentManagerServerOption func(s *AgentManagerServer)
    72  
    73  func WithUnknownFieldsForAgentManagerServer() AgentManagerServerOption {
    74  	return func(s *AgentManagerServer) {
    75  		s.allowUnknownFields = true
    76  	}
    77  }
    78  
    79  func NewAgentManagerServer(handler AgentManager, opts ...AgentManagerServerOption) http.Handler {
    80  	srv := &AgentManagerServer{
    81  		handler: handler,
    82  	}
    83  
    84  	for i := range opts {
    85  		opts[i](srv)
    86  	}
    87  
    88  	service := ranger.Service{
    89  		Name: "AgentManager",
    90  		Methods: map[string]ranger.Method{
    91  			"RegisterAgent":   srv.RegisterAgent,
    92  			"UnRegisterAgent": srv.UnRegisterAgent,
    93  			"PingPong":        srv.PingPong,
    94  		},
    95  	}
    96  	return ranger.NewRPCServer(&service)
    97  }
    98  
    99  type AgentManagerServer struct {
   100  	handler            AgentManager
   101  	allowUnknownFields bool
   102  }
   103  
   104  func (p *AgentManagerServer) RegisterAgent(ctx context.Context, reqBytes *[]byte) (pb.Message, error) {
   105  	var req AgentRegistrationRequest
   106  	var err error
   107  
   108  	md, ok := metadata.FromIncomingContext(ctx)
   109  	if !ok {
   110  		return nil, errors.New("could not access header")
   111  	}
   112  
   113  	switch md.First("Content-Type") {
   114  	case "application/protobuf", "application/octet-stream", "application/grpc+proto":
   115  		err = pb.Unmarshal(*reqBytes, &req)
   116  	default:
   117  		// handle case of empty object
   118  		if len(*reqBytes) > 0 {
   119  			err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req)
   120  		}
   121  	}
   122  
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	return p.handler.RegisterAgent(ctx, &req)
   127  }
   128  func (p *AgentManagerServer) UnRegisterAgent(ctx context.Context, reqBytes *[]byte) (pb.Message, error) {
   129  	var req Mrn
   130  	var err error
   131  
   132  	md, ok := metadata.FromIncomingContext(ctx)
   133  	if !ok {
   134  		return nil, errors.New("could not access header")
   135  	}
   136  
   137  	switch md.First("Content-Type") {
   138  	case "application/protobuf", "application/octet-stream", "application/grpc+proto":
   139  		err = pb.Unmarshal(*reqBytes, &req)
   140  	default:
   141  		// handle case of empty object
   142  		if len(*reqBytes) > 0 {
   143  			err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req)
   144  		}
   145  	}
   146  
   147  	if err != nil {
   148  		return nil, err
   149  	}
   150  	return p.handler.UnRegisterAgent(ctx, &req)
   151  }
   152  func (p *AgentManagerServer) PingPong(ctx context.Context, reqBytes *[]byte) (pb.Message, error) {
   153  	var req Ping
   154  	var err error
   155  
   156  	md, ok := metadata.FromIncomingContext(ctx)
   157  	if !ok {
   158  		return nil, errors.New("could not access header")
   159  	}
   160  
   161  	switch md.First("Content-Type") {
   162  	case "application/protobuf", "application/octet-stream", "application/grpc+proto":
   163  		err = pb.Unmarshal(*reqBytes, &req)
   164  	default:
   165  		// handle case of empty object
   166  		if len(*reqBytes) > 0 {
   167  			err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req)
   168  		}
   169  	}
   170  
   171  	if err != nil {
   172  		return nil, err
   173  	}
   174  	return p.handler.PingPong(ctx, &req)
   175  }
   176  
   177  // service interface definition
   178  
   179  type SecureTokenService interface {
   180  	ExchangeSSH(context.Context, *ExchangeSSHKeyRequest) (*ExchangeSSHKeyResponse, error)
   181  }
   182  
   183  // client implementation
   184  
   185  type SecureTokenServiceClient struct {
   186  	ranger.Client
   187  	httpclient ranger.HTTPClient
   188  	prefix     string
   189  }
   190  
   191  func NewSecureTokenServiceClient(addr string, client ranger.HTTPClient, plugins ...ranger.ClientPlugin) (*SecureTokenServiceClient, error) {
   192  	base, err := url.Parse(ranger.SanitizeUrl(addr))
   193  	if err != nil {
   194  		return nil, err
   195  	}
   196  
   197  	u, err := url.Parse("./SecureTokenService")
   198  	if err != nil {
   199  		return nil, err
   200  	}
   201  
   202  	serviceClient := &SecureTokenServiceClient{
   203  		httpclient: client,
   204  		prefix:     base.ResolveReference(u).String(),
   205  	}
   206  	serviceClient.AddPlugins(plugins...)
   207  	return serviceClient, nil
   208  }
   209  func (c *SecureTokenServiceClient) ExchangeSSH(ctx context.Context, in *ExchangeSSHKeyRequest) (*ExchangeSSHKeyResponse, error) {
   210  	out := new(ExchangeSSHKeyResponse)
   211  	err := c.DoClientRequest(ctx, c.httpclient, strings.Join([]string{c.prefix, "/ExchangeSSH"}, ""), in, out)
   212  	return out, err
   213  }
   214  
   215  // server implementation
   216  
   217  type SecureTokenServiceServerOption func(s *SecureTokenServiceServer)
   218  
   219  func WithUnknownFieldsForSecureTokenServiceServer() SecureTokenServiceServerOption {
   220  	return func(s *SecureTokenServiceServer) {
   221  		s.allowUnknownFields = true
   222  	}
   223  }
   224  
   225  func NewSecureTokenServiceServer(handler SecureTokenService, opts ...SecureTokenServiceServerOption) http.Handler {
   226  	srv := &SecureTokenServiceServer{
   227  		handler: handler,
   228  	}
   229  
   230  	for i := range opts {
   231  		opts[i](srv)
   232  	}
   233  
   234  	service := ranger.Service{
   235  		Name: "SecureTokenService",
   236  		Methods: map[string]ranger.Method{
   237  			"ExchangeSSH": srv.ExchangeSSH,
   238  		},
   239  	}
   240  	return ranger.NewRPCServer(&service)
   241  }
   242  
   243  type SecureTokenServiceServer struct {
   244  	handler            SecureTokenService
   245  	allowUnknownFields bool
   246  }
   247  
   248  func (p *SecureTokenServiceServer) ExchangeSSH(ctx context.Context, reqBytes *[]byte) (pb.Message, error) {
   249  	var req ExchangeSSHKeyRequest
   250  	var err error
   251  
   252  	md, ok := metadata.FromIncomingContext(ctx)
   253  	if !ok {
   254  		return nil, errors.New("could not access header")
   255  	}
   256  
   257  	switch md.First("Content-Type") {
   258  	case "application/protobuf", "application/octet-stream", "application/grpc+proto":
   259  		err = pb.Unmarshal(*reqBytes, &req)
   260  	default:
   261  		// handle case of empty object
   262  		if len(*reqBytes) > 0 {
   263  			err = jsonpb.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(*reqBytes, &req)
   264  		}
   265  	}
   266  
   267  	if err != nil {
   268  		return nil, err
   269  	}
   270  	return p.handler.ExchangeSSH(ctx, &req)
   271  }