discover_xri (OpenID)

    # File lib/openid/consumer/discovery.rb, line 412
      def self.discover_xri(iname)
        endpoints = []

        begin
          canonical_id, services = Yadis::XRI::ProxyResolver.new().query(
                iname, OpenIDServiceEndpoint::OPENID_TYPE_URIS)

          if canonical_id.nil?
            raise Yadis::XRDSError.new(sprintf('No CanonicalID found for XRI %s', iname))
          end

          flt = Yadis.make_filter(OpenIDServiceEndpoint)

          services.each { |service_element|
            endpoints += flt.get_service_endpoints(iname, service_element)
          }
        rescue Yadis::XRDSError => why
          Util.log('xrds error on ' + iname + ': ' + why.to_s)
        end

        endpoints.each { |endpoint|
          # Is there a way to pass this through the filter to the endpoint
          # constructor instead of tacking it on after?
          endpoint.canonical_id = canonical_id
          endpoint.claimed_id = canonical_id
          endpoint.display_identifier = iname
        }

        # FIXME: returned xri should probably be in some normal form
        return [iname, self.get_op_or_user_services(endpoints)]
      end