<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,12 @@
+xmpp4r-observable (0.5.3)
+
+  * Added #pubsub.get_items_from (had to reimplement it so OpenFire gets
+  happy).
+  * Added #pubsub.is_subscribed_to? as a convenience method.
+
 xmpp4r-observable (0.5.2)
 
-  * #pubsub@my_nodes was taking a long time since it retrieves all
+  * #pubsub.my_nodes was taking a long time since it retrieves all
   subscriptions every time. Now we're managing it within @my_nodes, defined in
   the first call to it... So just the first call take a long time.
 </diff>
      <filename>ChangeLog</filename>
    </modified>
    <modified>
      <diff>@@ -201,6 +201,15 @@ module Jabber
 				end
 				return @my_nodes
 			end
+
+			# Return true if we're subscribed to that node
+			def is_subscribed_to?(node)
+				ret = false
+				subscriptions.each do |sub|
+					ret = true if sub.node == node and sub.attributes['subscription'] == 'subscribed'
+				end
+				return ret
+			end
 	
 			# Delete a PubSub node (Lots of options still have to be encoded!)
 			def delete_node(node)
@@ -251,6 +260,41 @@ module Jabber
 				item.add(entry)
 				publish_item(node, item)
 			end
+
+			# Get items from a node
+			def get_items_from(node, count = nil)
+				raise_noservice if ! has_service?
+
+				if is_subscribed_to?(node)
+					# FIXME
+					# @helper.get_items_from(node, count)
+					# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+					# The above should just work, but I had to reimplement it since OpenFire (the Jabber Server
+					# I am testing against) seems to require subids for nodes we're subscribed to.
+					subids = find_subids_for(node)
+					iq = Jabber::Iq.new(:get, @service_jid)
+					iq.add(Jabber::PubSub::IqPubSub.new)
+					iq.from = @observable.jid
+					items = Jabber::PubSub::Items.new
+					items.node = node
+					items.max_items = count
+					items.subid = subids[0]
+					iq.pubsub.add(items)
+					res = nil
+					@observable.client.send_with_id(iq) { |reply|
+						if reply.kind_of?(Jabber::Iq) and reply.pubsub and reply.pubsub.first_element('items')
+							res = {}
+							reply.pubsub.first_element('items').each_element('item') do |item|
+								res[item.attributes['id']] = item.children.first if item.children.first
+							end
+						end
+						true
+					}
+					res
+				else
+					@helper.get_items_from(node, count)
+				end
+			end
 	
 			private
 	</diff>
      <filename>lib/xmpp4r-observable.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 Gem::Specification.new do |s| 
   s.add_dependency('xmpp4r', '&gt;= 0.5.0')
   s.name = &quot;xmpp4r-observable&quot; 
-  s.version = &quot;0.5.2&quot; 
+  s.version = &quot;0.5.3&quot; 
   s.author = &quot;Pablo Lorenzoni&quot; 
   s.email = &quot;pablo@propus.com.br&quot; 
   s.homepage = &quot;http://www.nardol.org/&quot; </diff>
      <filename>xmpp4r-observable.gemspec</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>589cfe0ac05ff6ffadaa7a1486c5561787f6317a</id>
    </parent>
  </parents>
  <author>
    <name>Pablo Lorenzoni</name>
    <email>pablo@propus.com.br</email>
  </author>
  <url>http://github.com/spectra/xmpp4r-observable/commit/c99459415802b57d76ee536a004cdb4090a57aea</url>
  <id>c99459415802b57d76ee536a004cdb4090a57aea</id>
  <committed-date>2009-10-07T14:04:33-07:00</committed-date>
  <authored-date>2009-10-07T14:02:46-07:00</authored-date>
  <message>Added #get_items_from and #is_subscribed_to?</message>
  <tree>d9e45a14b0d492e4ed251483272d8e1403740f27</tree>
  <committer>
    <name>Pablo Lorenzoni</name>
    <email>pablo@propus.com.br</email>
  </committer>
</commit>
