seed

module
v0.0.0-...-4e5d2a0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 2, 2023 License: MIT

README

seed

A RPC over HTTP server.

Example

cd into examples directory. Run go build . Run ./examples .

	// New RPCServer
	s := server.NewServer(mid.CommonMiddleware)

	// Register GreeterServicer
	gs := NewGreeterServicer()
	gs.Register(s)

	// Listen
	fmt.Println(`Listening on port 8080`)
	fmt.Println(`test cmd: curl -X POST  --data '{"name": "seed client"}' http://localhost:8080/v1/GreeterService.Greet`)
	http.Handle("/v1/", s)
	log.Fatal(http.ListenAndServe(":8080", nil))

Routes

Routes are defined by the RpcEndpoint

type RPCEndpoint struct {
	Roles   []string
	Handler func(GenericRequest, []byte) (any, error)
}
Registering a Service

Service must implement the RPCService interface

type RPCService interface {
	Register(s *Server)
}

// Register implements GreeterRpcService
func (gs GreeterServicer) Register(s *server.Server) {
	s.Register("GreeterService", "Greet", server.RPCEndpoint{Roles: []string{}, Handler: gs.GreetHandler})
}
// GreetHandler validates input data prior to calling Greet
func (gs GreeterServicer) GreetHandler(r server.GenericRequest, b []byte) (any, error) {
	var gr GreetRequest
	if err := json.Unmarshal(b, &gr); err != nil {
		return nil, fmt.Errorf("Unmarshalling data: %w", err)
	}

	if err := validate.Check(gr); err != nil {
		return nil, fmt.Errorf("validating data: %w", err)
	}

	return gs.Greet(gr, r), nil
}

Directories

Path Synopsis
Package auth provides authentication and authorization support.
Package auth provides authentication and authorization support.
Package keystore implements the auth.KeyLookup interface.
Package keystore implements the auth.KeyLookup interface.
Package validate contains the support for validating models.
Package validate contains the support for validating models.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL