本文整理汇总了Golang中github.com/TheThingsNetwork/ttn/utils/errors.Wrap函数的典型用法代码示例。如果您正苦于以下问题:Golang Wrap函数的具体用法?Golang Wrap怎么用?Golang Wrap使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Wrap函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: DeleteDevice
func (h *handlerManager) DeleteDevice(ctx context.Context, in *pb.DeviceIdentifier) (*empty.Empty, error) {
if err := in.Validate(); err != nil {
return nil, errors.Wrap(err, "Invalid Device Identifier")
}
ctx, claims, err := h.validateTTNAuthAppContext(ctx, in.AppId)
if err != nil {
return nil, err
}
if !claims.AppRight(in.AppId, rights.Devices) {
return nil, errors.NewErrPermissionDenied(fmt.Sprintf(`No "devices" rights to application "%s"`, in.AppId))
}
if _, err := h.handler.applications.Get(in.AppId); err != nil {
return nil, errors.Wrap(err, "Application not registered to this Handler")
}
dev, err := h.handler.devices.Get(in.AppId, in.DevId)
if err != nil {
return nil, err
}
_, err = h.deviceManager.DeleteDevice(ctx, &pb_lorawan.DeviceIdentifier{AppEui: &dev.AppEUI, DevEui: &dev.DevEUI})
if err != nil && errors.GetErrType(errors.FromGRPCError(err)) != errors.NotFound {
return nil, errors.Wrap(errors.FromGRPCError(err), "Broker did not delete device")
}
err = h.handler.devices.Delete(in.AppId, in.DevId)
if err != nil {
return nil, err
}
return &empty.Empty{}, nil
}
示例2: GatewayStatus
// GatewayStatus handles gateway status streams
func (s *RouterStreamServer) GatewayStatus(stream Router_GatewayStatusServer) error {
md, err := api.MetadataFromContext(stream.Context())
if err != nil {
return err
}
ch, err := s.GatewayStatusChanFunc(md)
if err != nil {
return err
}
defer func() {
close(ch)
}()
for {
status, err := stream.Recv()
if err == io.EOF {
return stream.SendAndClose(&empty.Empty{})
}
if err != nil {
return err
}
if err := status.Validate(); err != nil {
return errors.Wrap(err, "Invalid Gateway Status")
}
ch <- status
}
}
示例3: GetDevAddr
func (h *handlerManager) GetDevAddr(ctx context.Context, in *pb_lorawan.DevAddrRequest) (*pb_lorawan.DevAddrResponse, error) {
res, err := h.devAddrManager.GetDevAddr(ctx, in)
if err != nil {
return nil, errors.Wrap(errors.FromGRPCError(err), "Broker did not return DevAddr")
}
return res, nil
}
示例4: GetPrefixes
func (b *brokerManager) GetPrefixes(ctx context.Context, in *lorawan.PrefixesRequest) (*lorawan.PrefixesResponse, error) {
res, err := b.devAddrManager.GetPrefixes(ctx, in)
if err != nil {
return nil, errors.Wrap(errors.FromGRPCError(err), "NetworkServer did not return prefixes")
}
return res, nil
}
示例5: SetApplication
func (h *handlerManager) SetApplication(ctx context.Context, in *pb.Application) (*empty.Empty, error) {
if err := in.Validate(); err != nil {
return nil, errors.Wrap(err, "Invalid Application")
}
ctx, claims, err := h.validateTTNAuthAppContext(ctx, in.AppId)
if err != nil {
return nil, err
}
if !claims.AppRight(in.AppId, rights.AppSettings) {
return nil, errors.NewErrPermissionDenied(`No "settings" rights to application`)
}
app, err := h.handler.applications.Get(in.AppId)
if err != nil {
return nil, err
}
app.StartUpdate()
app.Decoder = in.Decoder
app.Converter = in.Converter
app.Validator = in.Validator
app.Encoder = in.Encoder
err = h.handler.applications.Set(app)
if err != nil {
return nil, err
}
return &empty.Empty{}, nil
}
示例6: Uplink
// Uplink handles uplink streams
func (s *RouterStreamServer) Uplink(stream Router_UplinkServer) (err error) {
md, err := api.MetadataFromContext(stream.Context())
if err != nil {
return err
}
ch, err := s.UplinkChanFunc(md)
if err != nil {
return err
}
defer func() {
ctx := s.ctx
if err != nil {
ctx = ctx.WithError(err)
}
close(ch)
ctx.Debug("Closed Uplink stream")
}()
for {
uplink, err := stream.Recv()
if err == io.EOF {
return stream.SendAndClose(&empty.Empty{})
}
if err != nil {
return err
}
if err := uplink.Validate(); err != nil {
return errors.Wrap(err, "Invalid Uplink")
}
ch <- uplink
}
}
示例7: DeleteApplication
func (h *handlerManager) DeleteApplication(ctx context.Context, in *pb.ApplicationIdentifier) (*empty.Empty, error) {
if err := in.Validate(); err != nil {
return nil, errors.Wrap(err, "Invalid Application Identifier")
}
ctx, claims, err := h.validateTTNAuthAppContext(ctx, in.AppId)
if err != nil {
return nil, err
}
if !claims.AppRight(in.AppId, rights.AppSettings) {
return nil, errors.NewErrPermissionDenied(`No "settings" rights to application`)
}
_, err = h.handler.applications.Get(in.AppId)
if err != nil {
return nil, err
}
// Get and delete all devices for this application
devices, err := h.handler.devices.ListForApp(in.AppId)
if err != nil {
return nil, err
}
for _, dev := range devices {
_, err = h.deviceManager.DeleteDevice(ctx, &pb_lorawan.DeviceIdentifier{AppEui: &dev.AppEUI, DevEui: &dev.DevEUI})
if err != nil {
return nil, errors.Wrap(errors.FromGRPCError(err), "Broker did not delete device")
}
err = h.handler.devices.Delete(dev.AppID, dev.DevID)
if err != nil {
return nil, err
}
}
// Delete the Application
err = h.handler.applications.Delete(in.AppId)
if err != nil {
return nil, err
}
token, _ := api.TokenFromContext(ctx)
err = h.handler.Discovery.RemoveAppID(in.AppId, token)
if err != nil {
h.handler.Ctx.WithField("AppID", in.AppId).WithError(errors.FromGRPCError(err)).Warn("Could not unregister Application from Discovery")
}
return &empty.Empty{}, nil
}
示例8: NotNilAndValid
// NotNilAndValid checks if the given interface is not nil AND validates it
func NotNilAndValid(in interface{}, argument string) error {
// Structs can not be nil and reflect.ValueOf(in).IsNil() would panic
if reflect.ValueOf(in).Kind() == reflect.Struct {
return errors.Wrap(Validate(in), "Invalid "+argument)
}
// We need to check for the interface to be nil and the value of the interface
// See: https://stackoverflow.com/questions/13476349/check-for-nil-and-nil-interface-in-go
if in == nil || reflect.ValueOf(in).IsNil() {
return errors.NewErrInvalidArgument(argument, "can not be empty")
}
if err := Validate(in); err != nil {
return errors.Wrap(Validate(in), "Invalid "+argument)
}
return nil
}
示例9: GetStatus
func (n *networkServerManager) GetStatus(ctx context.Context, in *pb.StatusRequest) (*pb.Status, error) {
if n.networkServer.Identity.Id != "dev" {
_, err := n.networkServer.ValidateTTNAuthContext(ctx)
if err != nil {
return nil, errors.Wrap(err, "No access")
}
}
status := n.networkServer.GetStatus()
if status == nil {
return new(pb.Status), nil
}
return status, nil
}
示例10: GetDevicesForApplication
func (h *handlerManager) GetDevicesForApplication(ctx context.Context, in *pb.ApplicationIdentifier) (*pb.DeviceList, error) {
if err := in.Validate(); err != nil {
return nil, errors.Wrap(err, "Invalid Application Identifier")
}
ctx, claims, err := h.validateTTNAuthAppContext(ctx, in.AppId)
if err != nil {
return nil, err
}
if !claims.AppRight(in.AppId, rights.Devices) {
return nil, errors.NewErrPermissionDenied(fmt.Sprintf(`No "devices" rights to application "%s"`, in.AppId))
}
if _, err := h.handler.applications.Get(in.AppId); err != nil {
return nil, errors.Wrap(err, "Application not registered to this Handler")
}
devices, err := h.handler.devices.ListForApp(in.AppId)
if err != nil {
return nil, err
}
res := &pb.DeviceList{Devices: []*pb.Device{}}
for _, dev := range devices {
res.Devices = append(res.Devices, &pb.Device{
AppId: dev.AppID,
DevId: dev.DevID,
Device: &pb.Device_LorawanDevice{LorawanDevice: &pb_lorawan.Device{
AppId: dev.AppID,
AppEui: &dev.AppEUI,
DevId: dev.DevID,
DevEui: &dev.DevEUI,
DevAddr: &dev.DevAddr,
NwkSKey: &dev.NwkSKey,
AppSKey: &dev.AppSKey,
AppKey: &dev.AppKey,
}},
})
}
return res, nil
}
示例11: PrepareActivation
func (s *networkServerRPC) PrepareActivation(ctx context.Context, activation *broker.DeduplicatedDeviceActivationRequest) (*broker.DeduplicatedDeviceActivationRequest, error) {
if err := s.ValidateContext(ctx); err != nil {
return nil, err
}
if err := activation.Validate(); err != nil {
return nil, errors.Wrap(err, "Invalid Activation Request")
}
res, err := s.networkServer.HandlePrepareActivation(activation)
if err != nil {
return nil, err
}
return res, nil
}
示例12: Activate
// Activate implements RouterServer interface (github.com/TheThingsNetwork/ttn/api/router)
func (r *routerRPC) Activate(ctx context.Context, req *pb.DeviceActivationRequest) (*pb.DeviceActivationResponse, error) {
gateway, err := r.gatewayFromContext(ctx)
if err != nil {
return nil, err
}
if err := req.Validate(); err != nil {
return nil, errors.Wrap(err, "Invalid Activation Request")
}
if r.uplinkRate.Limit(gateway.ID) {
return nil, grpc.Errorf(codes.ResourceExhausted, "Gateway reached uplink rate limit")
}
return r.router.HandleActivation(gateway.ID, req)
}
示例13: Uplink
func (s *networkServerRPC) Uplink(ctx context.Context, message *broker.DeduplicatedUplinkMessage) (*broker.DeduplicatedUplinkMessage, error) {
if err := s.ValidateContext(ctx); err != nil {
return nil, err
}
if err := message.Validate(); err != nil {
return nil, errors.Wrap(err, "Invalid Uplink")
}
res, err := s.networkServer.HandleUplink(message)
if err != nil {
return nil, err
}
return res, nil
}
示例14: GetDevices
func (s *networkServerRPC) GetDevices(ctx context.Context, req *pb.DevicesRequest) (*pb.DevicesResponse, error) {
if err := s.ValidateContext(ctx); err != nil {
return nil, err
}
if err := req.Validate(); err != nil {
return nil, errors.Wrap(err, "Invalid Devices Request")
}
res, err := s.networkServer.HandleGetDevices(req)
if err != nil {
return nil, err
}
return res, nil
}
示例15: ActivationChallenge
func (h *handlerRPC) ActivationChallenge(ctx context.Context, challenge *pb_broker.ActivationChallengeRequest) (*pb_broker.ActivationChallengeResponse, error) {
_, err := h.handler.ValidateNetworkContext(ctx)
if err != nil {
return nil, err
}
if err := challenge.Validate(); err != nil {
return nil, errors.Wrap(err, "Invalid Activation Challenge Request")
}
res, err := h.handler.HandleActivationChallenge(challenge)
if err != nil {
return nil, err
}
return res, nil
}