res.SetError(errors.New("Identity not loaded!"), cmds.ErrNormal) return } name = n.Identity.Pretty() } else { name = req.Arguments()[0] } recursive, _, _ := req.Option("recursive").Bool() depth := 1 if recursive { depth = namesys.DefaultDepthLimit } resolver := namesys.NewRoutingResolver(n.Routing) output, err := resolver.ResolveN(req.Context(), name, depth) if err != nil { res.SetError(err, cmds.ErrNormal) return } // TODO: better errors (in the case of not finding the name, we get "failed to find any peer in table") res.SetOutput(&ResolvedPath{output}) }, Marshalers: cmds.MarshalerMap{ cmds.Text: func(res cmds.Response) (io.Reader, error) { output, ok := res.Output().(*ResolvedPath) if !ok { return nil, u.ErrCast()
} nocache, _, _ := req.Option("nocache").Bool() local, _, _ := req.Option("local").Bool() // default to nodes namesys resolver var resolver namesys.Resolver = n.Namesys if local && nocache { res.SetError(errors.New("cannot specify both local and nocache"), cmds.ErrNormal) return } if local { offroute := offline.NewOfflineRouter(n.Repo.Datastore(), n.PrivateKey) resolver = namesys.NewRoutingResolver(offroute, 0) } if nocache { resolver = namesys.NewNameSystem(n.Routing, n.Repo.Datastore(), 0) } var name string if len(req.Arguments()) == 0 { if n.Identity == "" { res.SetError(errors.New("Identity not loaded!"), cmds.ErrNormal) return } name = n.Identity.Pretty() } else {
res.SetError(errors.New("Identity not loaded!"), cmds.ErrNormal) return } name = n.Identity.Pretty() } else { name = req.Arguments()[0] } recursive, _, _ := req.Option("recursive").Bool() depth := 1 if recursive { depth = namesys.DefaultDepthLimit } resolver := namesys.NewRoutingResolver(router) output, err := resolver.ResolveN(req.Context(), name, depth) if err != nil { res.SetError(err, cmds.ErrNormal) return } // TODO: better errors (in the case of not finding the name, we get "failed to find any peer in table") res.SetOutput(&ResolvedPath{output}) }, Marshalers: cmds.MarshalerMap{ cmds.Text: func(res cmds.Response) (io.Reader, error) { output, ok := res.Output().(*ResolvedPath) if !ok { return nil, u.ErrCast()