ln-xmpp4r 0.5

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.
Files changed (215) hide show
  1. data/CHANGELOG +91 -0
  2. data/COPYING +340 -0
  3. data/LICENSE +59 -0
  4. data/README.rdoc +113 -0
  5. data/README_ruby19.txt +43 -0
  6. data/Rakefile +252 -0
  7. data/data/doc/xmpp4r/examples/advanced/adventure/README +56 -0
  8. data/data/doc/xmpp4r/examples/advanced/adventure/adventure.rb +23 -0
  9. data/data/doc/xmpp4r/examples/advanced/adventure/adventuremuc.rb +136 -0
  10. data/data/doc/xmpp4r/examples/advanced/adventure/cube.xml +15 -0
  11. data/data/doc/xmpp4r/examples/advanced/adventure/tower.xml +69 -0
  12. data/data/doc/xmpp4r/examples/advanced/adventure/world.rb +424 -0
  13. data/data/doc/xmpp4r/examples/advanced/fileserve.conf +11 -0
  14. data/data/doc/xmpp4r/examples/advanced/fileserve.rb +346 -0
  15. data/data/doc/xmpp4r/examples/advanced/getonline.rb +56 -0
  16. data/data/doc/xmpp4r/examples/advanced/gtkmucclient.rb +315 -0
  17. data/data/doc/xmpp4r/examples/advanced/migrate.rb +88 -0
  18. data/data/doc/xmpp4r/examples/advanced/minimuc.rb +266 -0
  19. data/data/doc/xmpp4r/examples/advanced/pep-aggregator/index.xsl +235 -0
  20. data/data/doc/xmpp4r/examples/advanced/pep-aggregator/pep-aggregator.rb +147 -0
  21. data/data/doc/xmpp4r/examples/advanced/recvfile.rb +84 -0
  22. data/data/doc/xmpp4r/examples/advanced/rosterdiscovery.rb +129 -0
  23. data/data/doc/xmpp4r/examples/advanced/sendfile.conf +10 -0
  24. data/data/doc/xmpp4r/examples/advanced/sendfile.rb +72 -0
  25. data/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr.rb +51 -0
  26. data/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_jabber.rb +43 -0
  27. data/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_test.rb +10 -0
  28. data/data/doc/xmpp4r/examples/advanced/versionpoll.rb +109 -0
  29. data/data/doc/xmpp4r/examples/advanced/xmpping.rb +146 -0
  30. data/data/doc/xmpp4r/examples/advanced/xmppingrc.sample +14 -0
  31. data/data/doc/xmpp4r/examples/basic/change_password.rb +41 -0
  32. data/data/doc/xmpp4r/examples/basic/client.rb +70 -0
  33. data/data/doc/xmpp4r/examples/basic/component.rb +11 -0
  34. data/data/doc/xmpp4r/examples/basic/echo.rb +37 -0
  35. data/data/doc/xmpp4r/examples/basic/jabbersend.rb +41 -0
  36. data/data/doc/xmpp4r/examples/basic/mass_sender.rb +68 -0
  37. data/data/doc/xmpp4r/examples/basic/muc_owner_config.rb +12 -0
  38. data/data/doc/xmpp4r/examples/basic/mucinfo.rb +41 -0
  39. data/data/doc/xmpp4r/examples/basic/mucsimplebot.rb +82 -0
  40. data/data/doc/xmpp4r/examples/basic/register.rb +42 -0
  41. data/data/doc/xmpp4r/examples/basic/remove_registration.rb +18 -0
  42. data/data/doc/xmpp4r/examples/basic/roster.rb +44 -0
  43. data/data/doc/xmpp4r/examples/basic/rosterprint.rb +50 -0
  44. data/data/doc/xmpp4r/examples/basic/rosterrename.rb +34 -0
  45. data/data/doc/xmpp4r/examples/basic/rosterwatch.rb +171 -0
  46. data/data/doc/xmpp4r/examples/basic/send_vcard.rb +67 -0
  47. data/data/doc/xmpp4r/examples/basic/tune_client.rb +56 -0
  48. data/data/doc/xmpp4r/examples/basic/tune_server.rb +58 -0
  49. data/data/doc/xmpp4r/examples/basic/versionbot.rb +75 -0
  50. data/lib/xmpp4r.rb +116 -0
  51. data/lib/xmpp4r/base64.rb +32 -0
  52. data/lib/xmpp4r/bytestreams.rb +15 -0
  53. data/lib/xmpp4r/bytestreams/helper/filetransfer.rb +319 -0
  54. data/lib/xmpp4r/bytestreams/helper/ibb/base.rb +257 -0
  55. data/lib/xmpp4r/bytestreams/helper/ibb/initiator.rb +31 -0
  56. data/lib/xmpp4r/bytestreams/helper/ibb/target.rb +54 -0
  57. data/lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb +152 -0
  58. data/lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb +86 -0
  59. data/lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb +198 -0
  60. data/lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb +65 -0
  61. data/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb +79 -0
  62. data/lib/xmpp4r/bytestreams/iq/bytestreams.rb +170 -0
  63. data/lib/xmpp4r/bytestreams/iq/si.rb +206 -0
  64. data/lib/xmpp4r/callbacks.rb +133 -0
  65. data/lib/xmpp4r/caps.rb +1 -0
  66. data/lib/xmpp4r/caps/c.rb +67 -0
  67. data/lib/xmpp4r/caps/helper/generator.rb +160 -0
  68. data/lib/xmpp4r/caps/helper/helper.rb +84 -0
  69. data/lib/xmpp4r/client.rb +344 -0
  70. data/lib/xmpp4r/command/helper/responder.rb +53 -0
  71. data/lib/xmpp4r/command/iq/command.rb +154 -0
  72. data/lib/xmpp4r/component.rb +103 -0
  73. data/lib/xmpp4r/connection.rb +223 -0
  74. data/lib/xmpp4r/dataforms.rb +5 -0
  75. data/lib/xmpp4r/dataforms/x/data.rb +297 -0
  76. data/lib/xmpp4r/debuglog.rb +63 -0
  77. data/lib/xmpp4r/delay.rb +5 -0
  78. data/lib/xmpp4r/delay/x/delay.rb +99 -0
  79. data/lib/xmpp4r/discovery.rb +8 -0
  80. data/lib/xmpp4r/discovery/helper/helper.rb +58 -0
  81. data/lib/xmpp4r/discovery/helper/responder.rb +165 -0
  82. data/lib/xmpp4r/discovery/iq/discoinfo.rb +211 -0
  83. data/lib/xmpp4r/discovery/iq/discoitems.rb +147 -0
  84. data/lib/xmpp4r/errors.rb +284 -0
  85. data/lib/xmpp4r/feature_negotiation.rb +5 -0
  86. data/lib/xmpp4r/feature_negotiation/iq/feature.rb +28 -0
  87. data/lib/xmpp4r/framework/base.rb +55 -0
  88. data/lib/xmpp4r/framework/bot.rb +148 -0
  89. data/lib/xmpp4r/httpbinding.rb +5 -0
  90. data/lib/xmpp4r/httpbinding/client.rb +275 -0
  91. data/lib/xmpp4r/idgenerator.rb +37 -0
  92. data/lib/xmpp4r/iq.rb +221 -0
  93. data/lib/xmpp4r/jid.rb +167 -0
  94. data/lib/xmpp4r/last.rb +2 -0
  95. data/lib/xmpp4r/last/helper/helper.rb +37 -0
  96. data/lib/xmpp4r/last/iq/last.rb +67 -0
  97. data/lib/xmpp4r/location.rb +2 -0
  98. data/lib/xmpp4r/location/helper/helper.rb +56 -0
  99. data/lib/xmpp4r/location/location.rb +179 -0
  100. data/lib/xmpp4r/message.rb +180 -0
  101. data/lib/xmpp4r/muc.rb +14 -0
  102. data/lib/xmpp4r/muc/helper/mucbrowser.rb +92 -0
  103. data/lib/xmpp4r/muc/helper/mucclient.rb +462 -0
  104. data/lib/xmpp4r/muc/helper/simplemucclient.rb +332 -0
  105. data/lib/xmpp4r/muc/iq/mucadmin.rb +23 -0
  106. data/lib/xmpp4r/muc/iq/mucadminitem.rb +20 -0
  107. data/lib/xmpp4r/muc/iq/mucowner.rb +15 -0
  108. data/lib/xmpp4r/muc/item.rb +143 -0
  109. data/lib/xmpp4r/muc/x/muc.rb +70 -0
  110. data/lib/xmpp4r/muc/x/mucuserinvite.rb +60 -0
  111. data/lib/xmpp4r/muc/x/mucuseritem.rb +36 -0
  112. data/lib/xmpp4r/presence.rb +232 -0
  113. data/lib/xmpp4r/pubsub.rb +8 -0
  114. data/lib/xmpp4r/pubsub/children/configuration.rb +86 -0
  115. data/lib/xmpp4r/pubsub/children/event.rb +49 -0
  116. data/lib/xmpp4r/pubsub/children/item.rb +35 -0
  117. data/lib/xmpp4r/pubsub/children/items.rb +53 -0
  118. data/lib/xmpp4r/pubsub/children/node_config.rb +48 -0
  119. data/lib/xmpp4r/pubsub/children/publish.rb +38 -0
  120. data/lib/xmpp4r/pubsub/children/retract.rb +41 -0
  121. data/lib/xmpp4r/pubsub/children/subscription.rb +62 -0
  122. data/lib/xmpp4r/pubsub/children/subscription_config.rb +67 -0
  123. data/lib/xmpp4r/pubsub/children/unsubscribe.rb +48 -0
  124. data/lib/xmpp4r/pubsub/helper/nodebrowser.rb +129 -0
  125. data/lib/xmpp4r/pubsub/helper/nodehelper.rb +156 -0
  126. data/lib/xmpp4r/pubsub/helper/oauth_service_helper.rb +90 -0
  127. data/lib/xmpp4r/pubsub/helper/servicehelper.rb +456 -0
  128. data/lib/xmpp4r/pubsub/iq/pubsub.rb +19 -0
  129. data/lib/xmpp4r/query.rb +15 -0
  130. data/lib/xmpp4r/reliable.rb +168 -0
  131. data/lib/xmpp4r/rexmladdons.rb +157 -0
  132. data/lib/xmpp4r/roster.rb +7 -0
  133. data/lib/xmpp4r/roster/helper/roster.rb +522 -0
  134. data/lib/xmpp4r/roster/iq/roster.rb +215 -0
  135. data/lib/xmpp4r/roster/x/roster.rb +138 -0
  136. data/lib/xmpp4r/rpc.rb +2 -0
  137. data/lib/xmpp4r/rpc/helper/client.rb +123 -0
  138. data/lib/xmpp4r/rpc/helper/server.rb +74 -0
  139. data/lib/xmpp4r/rpc/helper/xmlrpcaddons.rb +67 -0
  140. data/lib/xmpp4r/rpc/iq/rpc.rb +23 -0
  141. data/lib/xmpp4r/sasl.rb +248 -0
  142. data/lib/xmpp4r/semaphore.rb +38 -0
  143. data/lib/xmpp4r/stream.rb +599 -0
  144. data/lib/xmpp4r/streamparser.rb +85 -0
  145. data/lib/xmpp4r/test/listener_mocker.rb +118 -0
  146. data/lib/xmpp4r/tune.rb +2 -0
  147. data/lib/xmpp4r/tune/helper/helper.rb +58 -0
  148. data/lib/xmpp4r/tune/tune.rb +113 -0
  149. data/lib/xmpp4r/vcard.rb +6 -0
  150. data/lib/xmpp4r/vcard/helper/vcard.rb +84 -0
  151. data/lib/xmpp4r/vcard/iq/vcard.rb +109 -0
  152. data/lib/xmpp4r/version.rb +7 -0
  153. data/lib/xmpp4r/version/helper/responder.rb +72 -0
  154. data/lib/xmpp4r/version/helper/simpleresponder.rb +44 -0
  155. data/lib/xmpp4r/version/iq/version.rb +105 -0
  156. data/lib/xmpp4r/x.rb +37 -0
  157. data/lib/xmpp4r/xhtml.rb +1 -0
  158. data/lib/xmpp4r/xhtml/html.rb +115 -0
  159. data/lib/xmpp4r/xmpp4r.rb +20 -0
  160. data/lib/xmpp4r/xmppelement.rb +168 -0
  161. data/lib/xmpp4r/xmppstanza.rb +162 -0
  162. data/setup.rb +1586 -0
  163. data/test/bytestreams/tc_ibb.rb +188 -0
  164. data/test/bytestreams/tc_socks5bytestreams.rb +114 -0
  165. data/test/caps/tc_helper.rb +158 -0
  166. data/test/dataforms/tc_data.rb +81 -0
  167. data/test/delay/tc_xdelay.rb +51 -0
  168. data/test/discovery/tc_responder.rb +91 -0
  169. data/test/last/tc_helper.rb +75 -0
  170. data/test/lib/assert_equal_xml.rb +14 -0
  171. data/test/lib/clienttester.rb +149 -0
  172. data/test/muc/tc_muc_mucclient.rb +834 -0
  173. data/test/muc/tc_muc_simplemucclient.rb +114 -0
  174. data/test/muc/tc_mucowner.rb +50 -0
  175. data/test/pubsub/tc_helper.rb +785 -0
  176. data/test/pubsub/tc_nodeconfig.rb +61 -0
  177. data/test/pubsub/tc_subscriptionconfig.rb +41 -0
  178. data/test/reliable/tc_disconnect_cleanup.rb +334 -0
  179. data/test/reliable/tc_disconnect_exception.rb +37 -0
  180. data/test/reliable/tc_listener_mocked_test.rb +68 -0
  181. data/test/reliable/tc_reliable_connection.rb +31 -0
  182. data/test/roster/tc_helper.rb +524 -0
  183. data/test/roster/tc_iqqueryroster.rb +173 -0
  184. data/test/roster/tc_xroster.rb +73 -0
  185. data/test/rpc/tc_helper.rb +96 -0
  186. data/test/tc_callbacks.rb +129 -0
  187. data/test/tc_class_names.rb +146 -0
  188. data/test/tc_client.rb +30 -0
  189. data/test/tc_errors.rb +146 -0
  190. data/test/tc_idgenerator.rb +30 -0
  191. data/test/tc_iq.rb +113 -0
  192. data/test/tc_iqquery.rb +31 -0
  193. data/test/tc_jid.rb +204 -0
  194. data/test/tc_message.rb +131 -0
  195. data/test/tc_presence.rb +150 -0
  196. data/test/tc_rexml.rb +139 -0
  197. data/test/tc_stream.rb +167 -0
  198. data/test/tc_streamComponent.rb +95 -0
  199. data/test/tc_streamError.rb +129 -0
  200. data/test/tc_streamSend.rb +59 -0
  201. data/test/tc_streamparser.rb +125 -0
  202. data/test/tc_xmppstanza.rb +135 -0
  203. data/test/ts_xmpp4r.rb +44 -0
  204. data/test/tune/tc_helper_recv.rb +82 -0
  205. data/test/tune/tc_helper_send.rb +74 -0
  206. data/test/tune/tc_tune.rb +79 -0
  207. data/test/vcard/tc_helper.rb +49 -0
  208. data/test/vcard/tc_iqvcard.rb +62 -0
  209. data/test/version/tc_helper.rb +60 -0
  210. data/test/version/tc_iqqueryversion.rb +97 -0
  211. data/test/xhtml/tc_html.rb +41 -0
  212. data/tools/gen_requires.bash +31 -0
  213. data/tools/xmpp4r-gemspec-test.rb +11 -0
  214. data/xmpp4r.gemspec +238 -0
  215. metadata +280 -0
@@ -0,0 +1,49 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'xmpp4r/iq'
6
+
7
+ module Jabber
8
+ module PubSub
9
+
10
+ ##
11
+ # Event
12
+ # a publishing event
13
+ class Event < XMPPElement
14
+ name_xmlns 'event', NS_PUBSUB + '#event'
15
+ force_xmlns true
16
+
17
+ ##
18
+ # return payload
19
+ def payload
20
+ elements
21
+ end
22
+
23
+ ##
24
+ # add payload
25
+ # payload:: [REXML::Element]
26
+ def payload=(pl)
27
+ add_element = pl
28
+ end
29
+
30
+ ##
31
+ # return the payload type
32
+ def event_type?
33
+ # each child of event
34
+ # this should iterate only one time
35
+ each_element('./event/*') { |plelement|
36
+ case plelement.name
37
+ when 'collection' then return :collection
38
+ when 'configuration' then return :configuration
39
+ when 'delete' then return :delete
40
+ when 'items' then return :items
41
+ when 'purge' then return :purge
42
+ when 'subscription' then return :subscription
43
+ else return nil
44
+ end
45
+ }
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,35 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'xmpp4r/iq'
6
+
7
+ module Jabber
8
+ module PubSub
9
+ ##
10
+ # Item
11
+ # One PubSub Item
12
+ class Item < XMPPElement
13
+ name_xmlns 'item', NS_PUBSUB
14
+ def initialize(id=nil)
15
+ super()
16
+ attributes['id'] = id
17
+ end
18
+ def id
19
+ attributes['id']
20
+ end
21
+ def id=(myid)
22
+ attributes['id'] = myid
23
+ end
24
+ end
25
+
26
+ ##
27
+ # An Item wrapped in a Pubsub Event.
28
+ #
29
+ # See example 2 in http://www.xmpp.org/extensions/xep-0060.html#intro-howitworks
30
+ # and http://www.xmpp.org/extensions/xep-0060.html#schemas-event
31
+ class EventItem < Item
32
+ name_xmlns 'item', NS_PUBSUB + "#event"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,53 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'xmpp4r/iq'
6
+
7
+ module Jabber
8
+ module PubSub
9
+ ##
10
+ # Items
11
+ # a collection of Items
12
+ class Items < XMPPElement
13
+ include Enumerable
14
+ name_xmlns 'items', NS_PUBSUB
15
+
16
+ def node
17
+ attributes['node']
18
+ end
19
+ def node=(mynodename)
20
+ attributes['node'] = mynodename
21
+ end
22
+ def subid
23
+ attributes['subid']
24
+ end
25
+ def subid=(mysubid)
26
+ attributes['subid'] = mysubid.to_s
27
+ end
28
+ def max_items
29
+ attributes['max_items']
30
+ end
31
+ def max_items=(mymaxitems)
32
+ attributes['max_items'] = mymaxitems.to_s
33
+ end
34
+
35
+ def items
36
+ get_elements("item")
37
+ end
38
+
39
+ def each(&block)
40
+ items.each(&block)
41
+ end
42
+ end
43
+
44
+ ##
45
+ # Items wrapped in a Pubsub Event.
46
+ #
47
+ # See example 2 in http://www.xmpp.org/extensions/xep-0060.html#intro-howitworks
48
+ # and http://www.xmpp.org/extensions/xep-0060.html#schemas-event
49
+ class EventItems < Items
50
+ name_xmlns 'items', NS_PUBSUB + "#event"
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,48 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'xmpp4r/xmppelement'
6
+ require 'xmpp4r/pubsub/children/configuration'
7
+
8
+ module Jabber
9
+ module PubSub
10
+ ##
11
+ # NodeConfig
12
+ #
13
+ # A <configure> XMPP element for pubsub nodes, see example 123 in
14
+ # http://www.xmpp.org/extensions/xep-0060.html#owner-create-and-configure
15
+ class NodeConfig < Configuration
16
+ name_xmlns 'configure', NS_PUBSUB
17
+
18
+ ##
19
+ # Construct a <configure> element.
20
+ # node:: [String] the node to configure
21
+ # options:: [Hash] the configuration to apply
22
+ def initialize(node = nil, options = nil)
23
+ super()
24
+
25
+ self.node = node
26
+ self.options = options
27
+ end
28
+
29
+ private
30
+
31
+ def form_type
32
+ 'http://jabber.org/protocol/pubsub#node_config'
33
+ end
34
+ end
35
+
36
+ ##
37
+ #
38
+ # OwnerNodeConfig
39
+ #
40
+ # A <configure> stanza for 'Owner' use cases
41
+ #
42
+ # see example 125 in
43
+ # http://www.xmpp.org/extensions/xep-0060.html#owner-configure-request
44
+ class OwnerNodeConfig < NodeConfig
45
+ name_xmlns 'configure', NS_PUBSUB + '#owner'
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,38 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'xmpp4r/xmppelement'
6
+
7
+ module Jabber
8
+ module PubSub
9
+
10
+ ##
11
+ # Publish
12
+ #
13
+ # A <publish> XMPP element, see example 1 in
14
+ # http://www.xmpp.org/extensions/xep-0060.html#intro-howitworks
15
+ class Publish < XMPPElement
16
+ include Enumerable
17
+ name_xmlns 'publish', NS_PUBSUB
18
+
19
+ ##
20
+ # support for enumerating <item> elements
21
+ def each(&block)
22
+ items.each(&block)
23
+ end
24
+
25
+ ##
26
+ # return child <item> elements
27
+ def items
28
+ get_elements("item")
29
+ end
30
+
31
+ ##
32
+ # return the node for this publication
33
+ def node
34
+ attributes['node']
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,41 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'xmpp4r/xmppelement'
6
+
7
+ module Jabber
8
+ module PubSub
9
+
10
+ ##
11
+ # Retract
12
+ #
13
+ # A <retract> XMPP element, see example 103 in
14
+ # http://xmpp.org/extensions/xep-0060.html#publisher-delete
15
+ class Retract < XMPPElement
16
+ name_xmlns 'retract', NS_PUBSUB
17
+ ##
18
+ # get the node for this retraction
19
+ def node
20
+ attributes['node']
21
+ end
22
+
23
+ ##
24
+ # set the node for this retraction
25
+ def node=(s)
26
+ attributes['node'] = s
27
+ end
28
+
29
+ ##
30
+ # Get <item/> children
31
+ def items
32
+ res = []
33
+ each_element('item') { |item|
34
+ res << item
35
+ }
36
+ res
37
+ end
38
+ end
39
+ end
40
+ end
41
+
@@ -0,0 +1,62 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'xmpp4r/iq'
6
+
7
+ module Jabber
8
+ module PubSub
9
+ ##
10
+ # Subscription
11
+ class Subscription < XMPPElement
12
+ name_xmlns 'subscription', NS_PUBSUB
13
+ def initialize(myjid=nil,mynode=nil,mysubid=nil,mysubscription=nil)
14
+ super()
15
+ jid = myjid
16
+ node = mynode
17
+ subid = mysubid
18
+ state = mysubscription
19
+ end
20
+ def jid
21
+ (a = attribute('jid')).nil? ? a : JID.new(a.value)
22
+ end
23
+ def jid=(myjid)
24
+ add_attribute('jid', myjid ? myjid.to_s : nil)
25
+ end
26
+
27
+ def node
28
+ attributes['node']
29
+ end
30
+ def node=(mynode)
31
+ attributes['node'] = mynode
32
+ end
33
+
34
+ def subid
35
+ attributes['subid']
36
+ end
37
+ def subid=(mysubid)
38
+ attributes['subid'] = mysubid
39
+ end
40
+
41
+ def state
42
+ # each child of event
43
+ # this should interate only one time
44
+ case attributes['subscription']
45
+ when 'none' then return :none
46
+ when 'pending' then return :pending
47
+ when 'subscribed' then return :subscribed
48
+ when 'unconfigured' then return :unconfigured
49
+ else return nil
50
+ end
51
+ end
52
+ def state=(mystate)
53
+ attributes['subscription'] = mystate
54
+ end
55
+ alias subscription state
56
+
57
+ def need_approval?
58
+ state == :pending
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,67 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'xmpp4r/xmppelement'
6
+ require 'xmpp4r/pubsub/children/configuration'
7
+ require 'xmpp4r/pubsub/iq/pubsub'
8
+
9
+ module Jabber
10
+ module PubSub
11
+ ##
12
+ # SubscriptionConfig
13
+ #
14
+ # An <options> XMPP element, see example 57 in
15
+ # http://www.xmpp.org/extensions/xep-0060.html#subscriber-configure-success
16
+ class SubscriptionConfig < Configuration
17
+ name_xmlns 'options', NS_PUBSUB
18
+
19
+ ##
20
+ # Construct a new Options stanza
21
+ # node:: [String] the node to which this subscription applies
22
+ # jid:: [String] or [Jabber::JID] the jid that holds the subscription
23
+ # options:: [Hash] the configuration for this subscription
24
+ # subid:: [String] (optional) subscription id
25
+ def initialize(node = nil, jid = nil, options = nil, subid = nil)
26
+ super()
27
+
28
+ self.node = node
29
+ self.jid = jid
30
+ self.options = options
31
+ self.subid = subid
32
+ end
33
+
34
+ ##
35
+ # set the 'jid' attribute of this stanza
36
+ # jid:: [Jabber::JID] or [String] the jid owning the subscription
37
+ def jid=(jid)
38
+ attributes['jid'] = jid.to_s
39
+ end
40
+
41
+ ##
42
+ # get the 'jid' attribute for this stanza
43
+ def jid
44
+ attributes['jid'] ? Jabber::JID.new(attributes['jid']) : nil
45
+ end
46
+
47
+ ##
48
+ # set the 'subid' attribute
49
+ # subid:: [String] the subscription id
50
+ def subid=(subid)
51
+ attributes['subid'] = subid
52
+ end
53
+
54
+ ##
55
+ # get the 'subid' attribute
56
+ def subid
57
+ attributes['subid']
58
+ end
59
+
60
+ private
61
+
62
+ def form_type
63
+ 'http://jabber.org/protocol/pubsub#subscribe_options'
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,48 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'xmpp4r/iq'
6
+
7
+ module Jabber
8
+ module PubSub
9
+ ##
10
+ # Unsubscribe
11
+ class Unsubscribe < XMPPElement
12
+ name_xmlns 'unsubscribe'
13
+ def initialize(myjid=nil,mynode=nil)
14
+ super()
15
+ jid = myjid
16
+ node = mynode
17
+ end
18
+
19
+ ##
20
+ # shows the jid
21
+ # return:: [String]
22
+ def jid
23
+ (a = attribute('jid')).nil? ? a : JID.new(a.value)
24
+ end
25
+
26
+ ##
27
+ # sets the jid
28
+ # =:: [Jabber::JID] or [String]
29
+ def jid=(myjid)
30
+ add_attribute('jid', myjid ? myjid.to_s : nil)
31
+ end
32
+
33
+ ##
34
+ # shows the node
35
+ # return:: [String]
36
+ def node
37
+ attributes['node']
38
+ end
39
+
40
+ ##
41
+ # sets the node
42
+ # =:: [String]
43
+ def node=(mynode)
44
+ attributes['node'] = mynode
45
+ end
46
+ end
47
+ end
48
+ end