ostatus 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/ostatus/feed.rb CHANGED
@@ -9,17 +9,13 @@ module OStatus
9
9
 
10
10
  # This class represents an OStatus Feed object.
11
11
  class Feed
12
- def initialize(str, url, access_token, author, entries, id, title, links)
12
+ def initialize(str, url, access_token, options)
13
13
  @str = str
14
14
  @url = url
15
15
  @access_token = access_token
16
- @author = author
17
- @entries = entries
18
- @id = id
19
- @title = title
20
- @links = links
16
+ @options = options
21
17
 
22
- if id == nil
18
+ if options == nil
23
19
  @xml = Nokogiri::XML::Document.parse(self.atom)
24
20
  end
25
21
  end
@@ -27,17 +23,17 @@ module OStatus
27
23
  # Creates a new Feed instance given by the atom feed located at 'url'
28
24
  # and optionally using the OAuth::AccessToken given.
29
25
  def Feed.from_url(url, access_token = nil)
30
- Feed.new(nil, url, access_token, nil, nil, nil, nil, nil)
26
+ Feed.new(nil, url, access_token, nil)
31
27
  end
32
28
 
33
29
  # Creates a new Feed instance that contains the information given by
34
30
  # the various instances of author and entries.
35
- def Feed.from_data(id, title, url, author, entries, links)
36
- Feed.new(nil, url, nil, author, entries, id, title, links)
31
+ def Feed.from_data(url, options)
32
+ Feed.new(nil, url, nil, options)
37
33
  end
38
34
 
39
35
  def Feed.from_string(str)
40
- Feed.new(str, nil, nil, nil, nil, nil, nil, nil)
36
+ Feed.new(str, nil, nil, nil)
41
37
  end
42
38
 
43
39
  # Returns an array of Nokogiri::XML::Element instances for all link tags
@@ -49,7 +45,7 @@ module OStatus
49
45
  # returns the contents of the href attribute.
50
46
  #
51
47
  def link(attribute)
52
- return @links[attribute] unless @links == nil
48
+ return @options[:links][attribute] unless @options == nil
53
49
 
54
50
  # get all links with rel attribute being equal to attribute
55
51
  @xml.xpath('/xmlns:feed/xmlns:link').select do |link|
@@ -69,16 +65,30 @@ module OStatus
69
65
  link(:salmon).first[:href]
70
66
  end
71
67
 
68
+ # Returns the logo
69
+ def logo
70
+ return @options[:logo] unless @options == nil
71
+
72
+ pick_first_node(@xml.xpath('/xmlns:feed/xmlns:logo'))
73
+ end
74
+
75
+ # Returns the icon
76
+ def icon
77
+ return @options[:icon] unless @options == nil
78
+
79
+ pick_first_node(@xml.xpath('/xmlns:feed/xmlns:icon'))
80
+ end
81
+
72
82
  # This method will return a String containing the actual content of
73
83
  # the atom feed. It will make a network request (through OAuth if
74
84
  # an access token was given) to retrieve the document if necessary.
75
85
  def atom
76
86
  if @str != nil
77
87
  @str
78
- elsif @id == nil and @access_token == nil
88
+ elsif @options == nil and @access_token == nil
79
89
  # simply open the url
80
90
  open(@url).read
81
- elsif @id == nil and @url != nil
91
+ elsif @options == nil and @url != nil
82
92
  # open the url through OAuth
83
93
  @access_token.get(@url).body
84
94
  else
@@ -96,7 +106,7 @@ module OStatus
96
106
  :hubs => self.hubs
97
107
  )
98
108
 
99
- @entries.each do |entry|
109
+ @options[:entries].each do |entry|
100
110
  entry_url = entry.link[:href]
101
111
  entry_url = @url if entry_url == nil
102
112
 
@@ -131,13 +141,13 @@ module OStatus
131
141
  private :pick_first_node
132
142
 
133
143
  def id
134
- return @id if @xml == nil
144
+ return @options[:id] unless @options == nil
135
145
 
136
146
  pick_first_node(@xml.xpath('/xmlns:feed/xmlns:id'))
137
147
  end
138
148
 
139
149
  def title
140
- return @title if @xml == nil
150
+ return @options[:title] unless @options == nil
141
151
 
142
152
  pick_first_node(@xml.xpath('/xmlns:feed/xmlns:title'))
143
153
  end
@@ -149,7 +159,7 @@ module OStatus
149
159
  # Returns an OStatus::Author that will parse the author information
150
160
  # within the Feed.
151
161
  def author
152
- return @author if @xml == nil
162
+ return @options[:author] unless @options == nil
153
163
 
154
164
  author_xml = @xml.at_css('author')
155
165
  OStatus::Author.new(author_xml)
@@ -158,7 +168,7 @@ module OStatus
158
168
  # This method gives you an array of OStatus::Entry instances for
159
169
  # each entry listed in the feed.
160
170
  def entries
161
- return @entries if @xml == nil
171
+ return @options[:entries] unless @options == nil
162
172
 
163
173
  entries_xml = @xml.css('entry')
164
174
 
@@ -1,3 +1,3 @@
1
1
  module OStatus
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 3
9
- version: 0.0.3
8
+ - 4
9
+ version: 0.0.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Hackers of the Severed Hand
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-03-14 00:00:00 -04:00
17
+ date: 2011-03-15 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency