Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gogo/status

gRPC-like status package for use with GoGo Protobuf types
https://github.com/gogo/status

gogoproto grpc protobuf

Last synced: 2 months ago
JSON representation

gRPC-like status package for use with GoGo Protobuf types

Awesome Lists containing this project

README

        

# Status

This is a convenience package for users of `gogo/protobuf` to be able to use
their `gogo/protobuf` generated message easily and transparently with the
gRPC status error structure.

It requires [Go gRPC version 1.11](https://github.com/grpc/grpc-go/releases/tag/v1.11.0)
or above to successfully transmit statuses over the gRPC transport.

## Use

Use as you would the normal `grpc/status` package:

```go
return status.Error(codes.NotFound, "no such user")
```

```go
st := status.New(codes.FailedPrecondition, "wrong user role")
detSt, err := st.WithDetails(&rpc.BadRequest{
FieldViolations: []*rpc.BadRequest_FieldViolation{
{
Field: "role",
Description: "The first user created must have the role of an ADMIN",
},
},
})
if err == nil {
return detSt.Err()
}
return st.Err()
```

## License

The code is 95% copied from the official gRPC status package, so the gRPC
License applies.

### Changes

The changes applied include changing the use of the
`golang/protobuf` packages to `gogo/protobuf`, and changing the
generated files from `google.golang.org/genproto/googleapis` to
`github.com/gogo/googleapis/`.

We've also created an implicit interface fulfilled by all `gogo/status`
errors, for use with `grpc/status` and the gRPC runtime libraries.