mirror of
https://github.com/rocky-linux/peridot.git
synced 2024-12-24 19:38:31 +00:00
48 lines
1.3 KiB
Markdown
48 lines
1.3 KiB
Markdown
|
# 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.
|