123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package streaming
- import (
- "net/http"
- "strconv"
- "google.golang.org/grpc/codes"
- grpcstatus "google.golang.org/grpc/status"
- )
- func NewErrorStreamingDisabled(method string) error {
- return grpcstatus.Errorf(codes.NotFound, "streaming method %s disabled", method)
- }
- func NewErrorTooManyInFlight() error {
- return grpcstatus.Error(codes.ResourceExhausted, "maximum number of in-flight requests exceeded")
- }
- func WriteError(err error, w http.ResponseWriter) error {
- s, _ := grpcstatus.FromError(err)
- var status int
- switch s.Code() {
- case codes.NotFound:
- status = http.StatusNotFound
- case codes.ResourceExhausted:
-
-
-
- w.Header().Set("Retry-After", strconv.Itoa(int(cacheTTL.Seconds())))
- status = http.StatusTooManyRequests
- default:
- status = http.StatusInternalServerError
- }
- w.WriteHeader(status)
- _, writeErr := w.Write([]byte(err.Error()))
- return writeErr
- }
|