Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ForwardResponseMessage = func(ctx *gin.Context, md grpc.ServerMetadata, message proto.Message) { if !message.ProtoReflect().IsValid() { ctx.Writer.Write(httpx.RespOk) return } err := gateway.ForwardResponseMessage(ctx.Writer, ctx.Request, md, message, gateway.Marshaler) if err != nil { HttpError(ctx, err) return } }
View Source
var HttpError = func(ctx *gin.Context, err error) { s, _ := status.FromError(err) const fallback = `{"code": 14, "msg": "failed to marshal error message"}` delete(ctx.Request.Header, httpx.HeaderTrailer) ctx.Header(httpx.HeaderContentType, gateway.Marshaler.ContentType(nil)) se := &errors.ErrResp{Code: errors.ErrCode(s.Code()), Msg: s.Message()} buf, merr := gateway.Marshaler.Marshal(se) if merr != nil { grpclog.Infof("Failed to marshal error message %q: %v", se, merr) ctx.Status(http.StatusInternalServerError) if _, err := io.WriteString(ctx.Writer, fallback); err != nil { grpclog.Infof("Failed to write response: %v", err) } return } if _, err := ctx.Writer.Write(buf); err != nil { grpclog.Infof("Failed to write response: %v", err) } }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.