code: func (a *API) ResolveFeed(ctx context.Context, uri *URI, values feed.Values) (*feed.Feed, error) {
  	var fd *feed.Feed
  	var err error
  	if uri.Addr != "" {
  		// resolve the content key.
  		manifestAddr := uri.Address()
  		if manifestAddr == nil {
  			manifestAddr, err = a.Resolve(ctx, uri.Addr)
  			if err != nil {
  				return nil, ErrCannotResolveFeedURI
  			}
  		}
  
  		// get the Swarm feed from the manifest
  		fd, err = a.ResolveFeedManifest(ctx, manifestAddr)
  		if err != nil {
  			return nil, err
  		}
  		log.Debug("handle.get.feed: resolved", "manifestkey", manifestAddr, "feed", fd.Hex())
  	} else {
  		var f feed.Feed
  		if err := f.FromValues(values); err != nil {
  			return nil, ErrCannotResolveFeed
  
  		}
  		fd = &f
  	}
  	return fd, nil
  }
docs: // ResolveFeed attempts to extract feed information out of the manifest, if provided
  // If not, it attempts to extract the feed out of a set of key-value pairs