gateway

package
v0.5.13 Latest Latest
Warning

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

Go to latest
Published: Dec 3, 2025 License: MIT Imports: 10 Imported by: 3

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.

Jump to

Keyboard shortcuts

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