Class: XRD::ResourceDescriptor

Inherits:
Object
  • Object
show all
Includes:
SAXMachine, Properties
Defined in:
lib/xrd/resource_descriptor.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Properties

included, #properties

Instance Attribute Details

#expiresObject

Returns the value of attribute expires.



53
54
55
# File 'lib/xrd/resource_descriptor.rb', line 53

def expires
  @expires
end

#subjectObject

Returns the value of attribute subject.



63
64
65
# File 'lib/xrd/resource_descriptor.rb', line 63

def subject
  @subject
end

Class Method Details

.fetch_and_parse(uri, adapter = HTTPAdapter::NetHTTPRequestAdapter, connection = nil) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/xrd/resource_descriptor.rb', line 27

def self.fetch_and_parse(
    uri, adapter=HTTPAdapter::NetHTTPRequestAdapter, connection=nil)
  resource_descriptor = XRD::ResourceDescriptor.new
  resource_descriptor.base_uri = uri
  request = [
    'GET', resource_descriptor.base_uri.to_str,
    [['Accept', 'application/xrd+xml,application/xml;q=0.9,*/*;q=0.9']],
    ['']
  ]
  response = HTTPAdapter.transmit(request, adapter, connection)
  status, headers, body = response
  xrd_content = ""
  body.each do |chunk|
    xrd_content += chunk
  end
  return self.parse(xrd_content)
end

Instance Method Details

#add_aliases(new_alias) ⇒ Object



73
74
75
# File 'lib/xrd/resource_descriptor.rb', line 73

def add_aliases(new_alias)
  return self.aliases << Addressable::URI.parse(new_alias)
end

#aliasesObject



69
70
71
# File 'lib/xrd/resource_descriptor.rb', line 69

def aliases
  return @aliases ||= []
end

#base_uriObject



45
46
47
# File 'lib/xrd/resource_descriptor.rb', line 45

def base_uri
  return @base_uri ||= nil
end

#base_uri=(new_base_uri) ⇒ Object



49
50
51
# File 'lib/xrd/resource_descriptor.rb', line 49

def base_uri=(new_base_uri)
  @base_uri = Addressable::URI.parse(new_base_uri)
end

#inspectString

Returns a String representation of the resource descriptor object’s state.

Returns:

  • (String)

    The resource descriptor object’s state, as a String.



115
116
117
118
119
120
# File 'lib/xrd/resource_descriptor.rb', line 115

def inspect
  sprintf(
    "#<%s:%#0x SUBJECT:%s>",
    self.class.to_s, self.object_id, self.subject
  )
end


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
# File 'lib/xrd/resource_descriptor.rb', line 77

def links(query={})
  @links ||= []
  if query.empty?
    return @links
  else
    result_set = []
    for link in @links
      matched = query.all? do |field, condition|
        case field
        when :rel
          condition === link.rel
        when :media_type, :type
          if link.media_type.kind_of?(String) &&
              !condition.include?('/')
            link.media_type.to_s.index(condition) == 0
          else
            condition === link.media_type
          end
        when :href, :uri
          if condition.respond_to?(:match)
            condition.match(link.href)
          else
            condition === link.href
          end
        end
      end
      result_set << link if matched
    end
    return result_set
  end
end