This file is indexed.

/usr/lib/ruby/1.8/yadis/yadis.rb is in libyadis-ruby1.8 0.3.4-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
require 'yadis/xrds'
require 'yadis/fetcher'
require 'yadis/parsehtml'

class YADISParseError < StandardError; end
class YADISHTTPError < StandardError; end


# High level class for performing the Yadis protocol on a given URL. The
# YADIS.discover class method is a good place to get started in determining
# which services a URL supports.
class YADIS

  @@ca_path = nil
  attr_accessor :uri, :xrds_uri, :xrds

  # Discover services for a given URI.  Please note that no normalization 
  # will be done to the passed in URI, it should be a textually
  # valid URI string before calling discover.
  #
  # Returns nil if no XRDS was found, or a YADIS object on success.  This
  # method is essentially the same as YADIS.new, but does not raise any
  # exceptions.
  def YADIS.discover(uri)
    return nil unless uri
    begin
      return YADIS.new(uri)
    rescue
      return nil
    end
  end

  # Set the path to a certificate authority pem file, for verifying
  # server certificates of HTTPS pages.  If you are interested in verifying
  # certs like the mozilla web browser, have a look at the files here:
  #
  # http://curl.haxx.se/docs/caextract.html
  def YADIS.ca_path=(ca_path)
    ca_path = ca_path.to_s
    if File.exists?(ca_path)
      @@ca_path = ca_path
    else
      raise ArgumentError, "#{ca_path} is not a valid file path"
    end
  end

  # Discover services for a URI using the Yadis protocol.  +uri+ should
  # be a valid URI represented as a string.  This method may raise
  # YADISParseError in the case of an invalid or unparsable XRDS file,
  # or YADISHTTPError is the URI cannot be fetched.
  def initialize(uri)
    http = NetHTTPFetcher.new
    http.ca_path = @@ca_path if @@ca_path    
    headers = {'Accept' => 'application/xrds+xml'}

    response = http.get(uri, headers)
    raise YADISHTTPError, "Could not fetch #{uri}" if response.nil?

    uri, resp_payload = response
    xrds_uri = uri

    header = resp_payload['x-xrds-location']
    header = resp_payload['x-yadis-location'] if header.nil?

    if header
      xrds_uri = header
      response = http.get(xrds_uri)
      raise YADISHTTPError, "Could not fetch XRDS #{xrds_uri}" if response.nil?
      resp_payload = response[1]
    end

    unless resp_payload['content-type'] == 'application/xrds+xml'
      loc = html_yadis_location(resp_payload.body)
      unless loc.nil?
        xrds_uri, resp_payload = http.get(loc)
      end
    end

    xrds = XRDS.parse(resp_payload.body)
    raise YADISParseError, "Bad XRDS" if xrds.nil?

    @uri = uri
    @xrds_uri = xrds_uri
    @xrds = xrds
  end

  # Returns an Array Service objects sorted by priority.
  def services
    @xrds.services.each {|s| s.yadis = self}
    @xrds.services
  end

  # Returns a list of services, ordered by priority,
  # that match the filter. filter is a Proc object that produces
  # ServiceEnpoint objects, subclasses of ServiceEnpoint or nil.
  # This method is useful for extracting several types of services while
  # maintaining priority, for example you may write a filter Proc to extract
  # OpenID and LID ServiceEnpoint objects.
  def filter_services(filter)
    # product a list of filtered ServiceEndpoint objects.  filtered
    # will contain a list of nil or ServiceEnpoint (subclasses) objects.
    filtered = self.services.collect {|s| filter.call(s)}
    
    # return all object in filtered that are not nil
    return filtered.find_all {|s| s}
  end

end