1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-03-29 20:39:48 +02:00
2021-01-20 21:01:10 +00:00

46 lines
886 B
Go

package opencensus
import (
"fmt"
microerr "github.com/asim/go-micro/v3/errors"
"go.opencensus.io/trace"
"google.golang.org/genproto/googleapis/rpc/code"
)
var microCodeToStatusCode = map[int32]code.Code{
400: code.Code_INVALID_ARGUMENT,
401: code.Code_UNAUTHENTICATED,
403: code.Code_PERMISSION_DENIED,
404: code.Code_NOT_FOUND,
409: code.Code_ABORTED,
500: code.Code_INTERNAL,
}
func getResponseStatus(err error) trace.Status {
if err != nil {
microErr, ok := err.(*microerr.Error)
if ok {
statusCode := microErr.Code
code, ok := microCodeToStatusCode[microErr.Code]
if ok {
statusCode = int32(code)
}
return trace.Status{
Code: statusCode,
Message: fmt.Sprintf("%s: %s", microErr.Id, microErr.Detail),
}
}
return trace.Status{
Code: int32(code.Code_UNKNOWN),
Message: err.Error(),
}
}
return trace.Status{}
}