query (OpenID::Yadis::XRI::ProxyResolver)

    # File lib/openid/yadis/xrires.rb, line 45
            def query(xri, service_types)
              # these can be query args or http headers, needn't be both.
              # headers = {'Accept' => 'application/xrds+xml;sep=true'}
              canonicalID = nil

              services = service_types.collect { |service_type|
                url = self.query_url(xri, service_type)
                begin
                  response = OpenID.fetch(url)
                rescue
                  raise XRIHTTPError, ["Could not fetch #{xri}", $!]
                end
                raise XRIHTTPError, "Could not fetch #{xri}" if response.nil?

                xrds = Yadis::parseXRDS(response.body)
                canonicalID = Yadis::get_canonical_id(xri, xrds)

                Yadis::services(xrds) unless xrds.nil?
              }
              # TODO:
              #  * If we do get hits for multiple service_types, we're almost
              #    certainly going to have duplicated service entries and
              #    broken priority ordering.
              services = services.inject([]) { |flatter, some_services|
                flatter += some_services unless some_services.nil?
              }

              return canonicalID, services
            end