cerberus 0.6 → 0.7

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 (290) hide show
  1. data/Authors.txt +4 -0
  2. data/Changelog.txt +11 -0
  3. data/Copyright.txt +16 -0
  4. data/Rakefile +16 -25
  5. data/Readme.markdown +1 -3
  6. data/bin/cerberus +5 -0
  7. data/lib/cerberus/builder/bjam.rb +1 -3
  8. data/lib/cerberus/builder/maven2.rb +0 -1
  9. data/lib/cerberus/builder/rake.rb +1 -1
  10. data/lib/cerberus/builder/rspec.rb +0 -1
  11. data/lib/cerberus/builder/ruby_base.rb +0 -1
  12. data/lib/cerberus/component_lazy_loader.rb +6 -2
  13. data/lib/cerberus/config.example.yml +1 -0
  14. data/lib/cerberus/constants.rb +2 -2
  15. data/lib/cerberus/manager.rb +7 -1
  16. data/lib/cerberus/publisher/mail.rb +4 -4
  17. data/lib/cerberus/publisher/twitter.rb +0 -1
  18. data/lib/cerberus/scm/base.rb +19 -0
  19. data/lib/cerberus/scm/bzr.rb +62 -0
  20. data/lib/cerberus/scm/cvs.rb +2 -7
  21. data/lib/cerberus/scm/darcs.rb +2 -11
  22. data/lib/cerberus/scm/git.rb +6 -14
  23. data/lib/cerberus/scm/perforce.rb +4 -4
  24. data/lib/cerberus/scm/svn.rb +2 -7
  25. data/lib/cerberus/utils.rb +5 -0
  26. data/lib/vendor/irc/README +23 -0
  27. data/lib/vendor/irc/lib/IRC.rb +164 -0
  28. data/lib/vendor/irc/lib/IRCChannel.rb +33 -0
  29. data/lib/vendor/irc/lib/IRCConnection.rb +134 -0
  30. data/lib/vendor/irc/lib/IRCEvent.rb +91 -0
  31. data/lib/vendor/irc/lib/IRCUser.rb +23 -0
  32. data/lib/vendor/irc/lib/IRCUtil.rb +49 -0
  33. data/lib/vendor/irc/lib/eventmap.yml +247 -0
  34. data/lib/vendor/twitter/CHANGES +129 -0
  35. data/lib/vendor/twitter/MIT-LICENSE +20 -0
  36. data/lib/vendor/twitter/README +37 -0
  37. data/lib/vendor/twitter/TODO +7 -0
  38. data/lib/vendor/twitter/lib/twitter.rb +34 -0
  39. data/lib/vendor/twitter/lib/twitter/client.rb +24 -0
  40. data/lib/vendor/twitter/lib/twitter/client/account.rb +24 -0
  41. data/lib/vendor/twitter/lib/twitter/client/auth.rb +27 -0
  42. data/lib/vendor/twitter/lib/twitter/client/base.rb +93 -0
  43. data/lib/vendor/twitter/lib/twitter/client/blocks.rb +35 -0
  44. data/lib/vendor/twitter/lib/twitter/client/favorites.rb +53 -0
  45. data/lib/vendor/twitter/lib/twitter/client/friendship.rb +35 -0
  46. data/lib/vendor/twitter/lib/twitter/client/graph.rb +37 -0
  47. data/lib/vendor/twitter/lib/twitter/client/messaging.rb +79 -0
  48. data/lib/vendor/twitter/lib/twitter/client/profile.rb +29 -0
  49. data/lib/vendor/twitter/lib/twitter/client/search.rb +27 -0
  50. data/lib/vendor/twitter/lib/twitter/client/status.rb +51 -0
  51. data/lib/vendor/twitter/lib/twitter/client/timeline.rb +72 -0
  52. data/lib/vendor/twitter/lib/twitter/client/user.rb +65 -0
  53. data/lib/vendor/twitter/lib/twitter/config.rb +77 -0
  54. data/lib/vendor/twitter/lib/twitter/console.rb +31 -0
  55. data/lib/vendor/twitter/lib/twitter/core.rb +137 -0
  56. data/lib/vendor/twitter/lib/twitter/ext.rb +2 -0
  57. data/lib/vendor/twitter/lib/twitter/ext/stdlib.rb +52 -0
  58. data/lib/vendor/twitter/lib/twitter/extras.rb +39 -0
  59. data/lib/vendor/twitter/lib/twitter/meta.rb +56 -0
  60. data/lib/vendor/twitter/lib/twitter/model.rb +360 -0
  61. data/lib/vendor/twitter/lib/twitter/version.rb +19 -0
  62. data/lib/vendor/twitter/spec/twitter/client/account_spec.rb +28 -0
  63. data/lib/vendor/twitter/spec/twitter/client/auth_spec.rb +34 -0
  64. data/lib/vendor/twitter/spec/twitter/client/base_spec.rb +242 -0
  65. data/lib/vendor/twitter/spec/twitter/client/blocks_spec.rb +76 -0
  66. data/lib/vendor/twitter/spec/twitter/client/favorites_spec.rb +183 -0
  67. data/lib/vendor/twitter/spec/twitter/client/friendship_spec.rb +76 -0
  68. data/lib/vendor/twitter/spec/twitter/client/graph_spec.rb +67 -0
  69. data/lib/vendor/twitter/spec/twitter/client/messaging_spec.rb +135 -0
  70. data/lib/vendor/twitter/spec/twitter/client/profile_spec.rb +91 -0
  71. data/lib/vendor/twitter/spec/twitter/client/search_spec.rb +68 -0
  72. data/lib/vendor/twitter/spec/twitter/client/status_spec.rb +119 -0
  73. data/lib/vendor/twitter/spec/twitter/client/timeline_spec.rb +79 -0
  74. data/lib/vendor/twitter/spec/twitter/client/user_spec.rb +203 -0
  75. data/lib/vendor/twitter/spec/twitter/client_spec.rb +2 -0
  76. data/lib/vendor/twitter/spec/twitter/config_spec.rb +86 -0
  77. data/lib/vendor/twitter/spec/twitter/console_spec.rb +15 -0
  78. data/lib/vendor/twitter/spec/twitter/core_spec.rb +127 -0
  79. data/lib/vendor/twitter/spec/twitter/ext/stdlib_spec.rb +59 -0
  80. data/lib/vendor/twitter/spec/twitter/extras_spec.rb +46 -0
  81. data/lib/vendor/twitter/spec/twitter/meta_spec.rb +90 -0
  82. data/lib/vendor/twitter/spec/twitter/model_spec.rb +508 -0
  83. data/lib/vendor/twitter/spec/twitter/version_spec.rb +19 -0
  84. data/lib/vendor/xmpp4r/CHANGELOG +83 -0
  85. data/lib/vendor/xmpp4r/COPYING +340 -0
  86. data/lib/vendor/xmpp4r/LICENSE +59 -0
  87. data/lib/vendor/xmpp4r/README.rdoc +110 -0
  88. data/lib/vendor/xmpp4r/README_ruby19.txt +43 -0
  89. data/lib/vendor/xmpp4r/Rakefile +262 -0
  90. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/README +56 -0
  91. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventure.rb +23 -0
  92. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventuremuc.rb +136 -0
  93. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/cube.xml +15 -0
  94. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/tower.xml +69 -0
  95. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/world.rb +424 -0
  96. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.conf +11 -0
  97. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.rb +346 -0
  98. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/getonline.rb +56 -0
  99. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/gtkmucclient.rb +315 -0
  100. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/migrate.rb +88 -0
  101. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/minimuc.rb +266 -0
  102. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/index.xsl +235 -0
  103. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/pep-aggregator.rb +147 -0
  104. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/recvfile.rb +84 -0
  105. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/rosterdiscovery.rb +129 -0
  106. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.conf +10 -0
  107. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.rb +72 -0
  108. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr.rb +51 -0
  109. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_jabber.rb +43 -0
  110. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_test.rb +10 -0
  111. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/versionpoll.rb +90 -0
  112. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmpping.rb +146 -0
  113. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmppingrc.sample +14 -0
  114. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/change_password.rb +41 -0
  115. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/client.rb +70 -0
  116. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/component.rb +11 -0
  117. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/echo.rb +37 -0
  118. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/jabbersend.rb +41 -0
  119. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mass_sender.rb +68 -0
  120. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/muc_owner_config.rb +12 -0
  121. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucinfo.rb +41 -0
  122. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucsimplebot.rb +82 -0
  123. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/register.rb +42 -0
  124. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/remove_registration.rb +18 -0
  125. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/roster.rb +44 -0
  126. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterprint.rb +50 -0
  127. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterrename.rb +34 -0
  128. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterwatch.rb +171 -0
  129. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/send_vcard.rb +67 -0
  130. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_client.rb +56 -0
  131. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_server.rb +58 -0
  132. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/versionbot.rb +75 -0
  133. data/lib/vendor/xmpp4r/lib/xmpp4r.rb +116 -0
  134. data/lib/vendor/xmpp4r/lib/xmpp4r/base64.rb +32 -0
  135. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams.rb +15 -0
  136. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb +319 -0
  137. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/base.rb +257 -0
  138. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/initiator.rb +31 -0
  139. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/target.rb +47 -0
  140. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb +152 -0
  141. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb +86 -0
  142. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb +198 -0
  143. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb +65 -0
  144. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb +73 -0
  145. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb.orig +62 -0
  146. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/bytestreams.rb +170 -0
  147. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/si.rb +206 -0
  148. data/lib/vendor/xmpp4r/lib/xmpp4r/callbacks.rb +124 -0
  149. data/lib/vendor/xmpp4r/lib/xmpp4r/caps.rb +1 -0
  150. data/lib/vendor/xmpp4r/lib/xmpp4r/caps/c.rb +53 -0
  151. data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/generator.rb +160 -0
  152. data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/helper.rb +87 -0
  153. data/lib/vendor/xmpp4r/lib/xmpp4r/client.rb +317 -0
  154. data/lib/vendor/xmpp4r/lib/xmpp4r/command/helper/responder.rb +53 -0
  155. data/lib/vendor/xmpp4r/lib/xmpp4r/command/iq/command.rb +154 -0
  156. data/lib/vendor/xmpp4r/lib/xmpp4r/component.rb +103 -0
  157. data/lib/vendor/xmpp4r/lib/xmpp4r/connection.rb +219 -0
  158. data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms.rb +5 -0
  159. data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms/x/data.rb +297 -0
  160. data/lib/vendor/xmpp4r/lib/xmpp4r/debuglog.rb +42 -0
  161. data/lib/vendor/xmpp4r/lib/xmpp4r/delay.rb +5 -0
  162. data/lib/vendor/xmpp4r/lib/xmpp4r/delay/x/delay.rb +99 -0
  163. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery.rb +7 -0
  164. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/helper/responder.rb +165 -0
  165. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoinfo.rb +211 -0
  166. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoitems.rb +147 -0
  167. data/lib/vendor/xmpp4r/lib/xmpp4r/errors.rb +281 -0
  168. data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation.rb +5 -0
  169. data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation/iq/feature.rb +28 -0
  170. data/lib/vendor/xmpp4r/lib/xmpp4r/framework/base.rb +55 -0
  171. data/lib/vendor/xmpp4r/lib/xmpp4r/framework/bot.rb +148 -0
  172. data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding.rb +5 -0
  173. data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding/client.rb +285 -0
  174. data/lib/vendor/xmpp4r/lib/xmpp4r/idgenerator.rb +37 -0
  175. data/lib/vendor/xmpp4r/lib/xmpp4r/iq.rb +221 -0
  176. data/lib/vendor/xmpp4r/lib/xmpp4r/jid.rb +167 -0
  177. data/lib/vendor/xmpp4r/lib/xmpp4r/message.rb +148 -0
  178. data/lib/vendor/xmpp4r/lib/xmpp4r/muc.rb +14 -0
  179. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucbrowser.rb +92 -0
  180. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucclient.rb +462 -0
  181. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/simplemucclient.rb +332 -0
  182. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadmin.rb +23 -0
  183. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadminitem.rb +20 -0
  184. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucowner.rb +15 -0
  185. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/item.rb +143 -0
  186. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/muc.rb +70 -0
  187. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuserinvite.rb +60 -0
  188. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuseritem.rb +36 -0
  189. data/lib/vendor/xmpp4r/lib/xmpp4r/presence.rb +232 -0
  190. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub.rb +8 -0
  191. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb +86 -0
  192. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/event.rb +49 -0
  193. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/item.rb +35 -0
  194. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/items.rb +44 -0
  195. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/node_config.rb +48 -0
  196. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/publish.rb +24 -0
  197. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription.rb +62 -0
  198. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription_config.rb +67 -0
  199. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/unsubscribe.rb +48 -0
  200. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodebrowser.rb +130 -0
  201. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodehelper.rb +156 -0
  202. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb +417 -0
  203. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/iq/pubsub.rb +19 -0
  204. data/lib/vendor/xmpp4r/lib/xmpp4r/query.rb +15 -0
  205. data/lib/vendor/xmpp4r/lib/xmpp4r/rexmladdons.rb +151 -0
  206. data/lib/vendor/xmpp4r/lib/xmpp4r/roster.rb +7 -0
  207. data/lib/vendor/xmpp4r/lib/xmpp4r/roster/helper/roster.rb +519 -0
  208. data/lib/vendor/xmpp4r/lib/xmpp4r/roster/iq/roster.rb +215 -0
  209. data/lib/vendor/xmpp4r/lib/xmpp4r/roster/x/roster.rb +138 -0
  210. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc.rb +2 -0
  211. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/client.rb +123 -0
  212. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/server.rb +74 -0
  213. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/xmlrpcaddons.rb +67 -0
  214. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/iq/rpc.rb +23 -0
  215. data/lib/vendor/xmpp4r/lib/xmpp4r/sasl.rb +237 -0
  216. data/lib/vendor/xmpp4r/lib/xmpp4r/semaphore.rb +38 -0
  217. data/lib/vendor/xmpp4r/lib/xmpp4r/stream.rb +497 -0
  218. data/lib/vendor/xmpp4r/lib/xmpp4r/streamparser.rb +77 -0
  219. data/lib/vendor/xmpp4r/lib/xmpp4r/tune.rb +2 -0
  220. data/lib/vendor/xmpp4r/lib/xmpp4r/tune/helper/helper.rb +58 -0
  221. data/lib/vendor/xmpp4r/lib/xmpp4r/tune/tune.rb +113 -0
  222. data/lib/vendor/xmpp4r/lib/xmpp4r/vcard.rb +6 -0
  223. data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/helper/vcard.rb +84 -0
  224. data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/iq/vcard.rb +109 -0
  225. data/lib/vendor/xmpp4r/lib/xmpp4r/version.rb +7 -0
  226. data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/responder.rb +72 -0
  227. data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/simpleresponder.rb +44 -0
  228. data/lib/vendor/xmpp4r/lib/xmpp4r/version/iq/version.rb +105 -0
  229. data/lib/vendor/xmpp4r/lib/xmpp4r/x.rb +37 -0
  230. data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml.rb +1 -0
  231. data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml/html.rb +115 -0
  232. data/lib/vendor/xmpp4r/lib/xmpp4r/xmpp4r.rb +18 -0
  233. data/lib/vendor/xmpp4r/lib/xmpp4r/xmppelement.rb +168 -0
  234. data/lib/vendor/xmpp4r/lib/xmpp4r/xmppstanza.rb +162 -0
  235. data/lib/vendor/xmpp4r/setup.rb +1586 -0
  236. data/lib/vendor/xmpp4r/test/bytestreams/tc_ibb.rb +186 -0
  237. data/lib/vendor/xmpp4r/test/bytestreams/tc_socks5bytestreams.rb +113 -0
  238. data/lib/vendor/xmpp4r/test/caps/tc_helper.rb +156 -0
  239. data/lib/vendor/xmpp4r/test/dataforms/tc_data.rb +81 -0
  240. data/lib/vendor/xmpp4r/test/delay/tc_xdelay.rb +51 -0
  241. data/lib/vendor/xmpp4r/test/discovery/tc_responder.rb +91 -0
  242. data/lib/vendor/xmpp4r/test/lib/assert_equal_xml.rb +14 -0
  243. data/lib/vendor/xmpp4r/test/lib/clienttester.rb +120 -0
  244. data/lib/vendor/xmpp4r/test/muc/tc_muc_mucclient.rb +830 -0
  245. data/lib/vendor/xmpp4r/test/muc/tc_muc_simplemucclient.rb +114 -0
  246. data/lib/vendor/xmpp4r/test/muc/tc_mucowner.rb +50 -0
  247. data/lib/vendor/xmpp4r/test/pubsub/tc_helper.rb +662 -0
  248. data/lib/vendor/xmpp4r/test/pubsub/tc_nodeconfig.rb +54 -0
  249. data/lib/vendor/xmpp4r/test/pubsub/tc_subscriptionconfig.rb +41 -0
  250. data/lib/vendor/xmpp4r/test/roster/tc_helper.rb +514 -0
  251. data/lib/vendor/xmpp4r/test/roster/tc_iqqueryroster.rb +173 -0
  252. data/lib/vendor/xmpp4r/test/roster/tc_xroster.rb +73 -0
  253. data/lib/vendor/xmpp4r/test/rpc/tc_helper.rb +96 -0
  254. data/lib/vendor/xmpp4r/test/tc_callbacks.rb +129 -0
  255. data/lib/vendor/xmpp4r/test/tc_class_names.rb +146 -0
  256. data/lib/vendor/xmpp4r/test/tc_client.rb +30 -0
  257. data/lib/vendor/xmpp4r/test/tc_errors.rb +146 -0
  258. data/lib/vendor/xmpp4r/test/tc_idgenerator.rb +30 -0
  259. data/lib/vendor/xmpp4r/test/tc_iq.rb +113 -0
  260. data/lib/vendor/xmpp4r/test/tc_iqquery.rb +31 -0
  261. data/lib/vendor/xmpp4r/test/tc_jid.rb +204 -0
  262. data/lib/vendor/xmpp4r/test/tc_message.rb +116 -0
  263. data/lib/vendor/xmpp4r/test/tc_presence.rb +150 -0
  264. data/lib/vendor/xmpp4r/test/tc_rexml.rb +139 -0
  265. data/lib/vendor/xmpp4r/test/tc_stream.rb +229 -0
  266. data/lib/vendor/xmpp4r/test/tc_streamComponent.rb +95 -0
  267. data/lib/vendor/xmpp4r/test/tc_streamError.rb +131 -0
  268. data/lib/vendor/xmpp4r/test/tc_streamSend.rb +59 -0
  269. data/lib/vendor/xmpp4r/test/tc_streamparser.rb +112 -0
  270. data/lib/vendor/xmpp4r/test/tc_xmppstanza.rb +135 -0
  271. data/lib/vendor/xmpp4r/test/ts_xmpp4r.rb +53 -0
  272. data/lib/vendor/xmpp4r/test/tune/tc_helper_recv.rb +84 -0
  273. data/lib/vendor/xmpp4r/test/tune/tc_helper_send.rb +74 -0
  274. data/lib/vendor/xmpp4r/test/tune/tc_tune.rb +79 -0
  275. data/lib/vendor/xmpp4r/test/vcard/tc_helper.rb +49 -0
  276. data/lib/vendor/xmpp4r/test/vcard/tc_iqvcard.rb +62 -0
  277. data/lib/vendor/xmpp4r/test/version/tc_helper.rb +60 -0
  278. data/lib/vendor/xmpp4r/test/version/tc_iqqueryversion.rb +97 -0
  279. data/lib/vendor/xmpp4r/test/xhtml/tc_html.rb +41 -0
  280. data/lib/vendor/xmpp4r/tools/gen_requires.bash +31 -0
  281. data/lib/vendor/xmpp4r/tools/xmpp4r-gemspec-test.rb +11 -0
  282. data/lib/vendor/xmpp4r/xmpp4r.gemspec +291 -0
  283. data/test/jabber_publisher_test.rb +1 -1
  284. data/test/mail_publisher_test.rb +2 -2
  285. data/test/mock/twitter.rb +0 -1
  286. data/test/rspec_builder_test.rb +39 -2
  287. data/test/rss_publisher_test.rb +1 -1
  288. data/test/twitter_publisher_test.rb +1 -1
  289. metadata +268 -53
  290. data/lib/cerberus/publisher/gmailer.rb +0 -17
@@ -0,0 +1,332 @@
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/delay/x/delay'
6
+ require 'xmpp4r/muc/helper/mucclient'
7
+ require 'xmpp4r/muc/iq/mucadminitem'
8
+
9
+ module Jabber
10
+ module MUC
11
+ ##
12
+ # This class attempts to implement a lot of complexity of the
13
+ # Multi-User Chat protocol. If you want to implement JEP0045
14
+ # yourself, use Jabber::MUC::MUCClient for some minor
15
+ # abstraction.
16
+ #
17
+ # Minor flexibility penalty: the on_* callbacks are no
18
+ # CallbackLists and may therefore only used once. A second
19
+ # invocation will overwrite the previous set up block.
20
+ #
21
+ # *Hint:* the parameter time may be nil if the server didn't
22
+ # send it.
23
+ #
24
+ # Example usage:
25
+ # my_muc = Jabber::MUC::SimpleMUCClient.new(my_client)
26
+ # my_muc.on_message { |time,nick,text|
27
+ # puts (time || Time.new).strftime('%I:%M') + " <#{nick}> #{text}"
28
+ # }
29
+ # my_muc.join(Jabber::JID.new('jdev@conference.jabber.org/XMPP4R-Bot'))
30
+ #
31
+ # Please take a look at Jabber::MUC::MUCClient for
32
+ # derived methods, such as MUCClient#join, MUCClient#exit,
33
+ # ...
34
+ class SimpleMUCClient < MUCClient
35
+ ##
36
+ # Initialize a SimpleMUCClient
37
+ # stream:: [Stream] to operate on
38
+ # jid:: [JID] room@component/nick
39
+ # password:: [String] Optional password
40
+ def initialize(stream)
41
+ super
42
+
43
+ @room_message_block = nil
44
+ @message_block = nil
45
+ @private_message_block = nil
46
+ @subject_block = nil
47
+
48
+ @subject = nil
49
+
50
+ @join_block = nil
51
+ add_join_callback(999) { |pres|
52
+ # Presence time
53
+ time = nil
54
+ pres.each_element('x') { |x|
55
+ if x.kind_of?(Delay::XDelay)
56
+ time = x.stamp
57
+ end
58
+ }
59
+
60
+ # Invoke...
61
+ @join_block.call(time, pres.from.resource) if @join_block
62
+ false
63
+ }
64
+
65
+ @leave_block = nil
66
+ @self_leave_block = nil
67
+ add_leave_callback(999) { |pres|
68
+ # Presence time
69
+ time = nil
70
+ pres.each_element('x') { |x|
71
+ if x.kind_of?(Delay::XDelay)
72
+ time = x.stamp
73
+ end
74
+ }
75
+
76
+ # Invoke...
77
+ if pres.from == jid
78
+ @self_leave_block.call(time) if @self_leave_block
79
+ else
80
+ @leave_block.call(time, pres.from.resource) if @leave_block
81
+ end
82
+ false
83
+ }
84
+ end
85
+
86
+ private
87
+
88
+ def handle_message(msg)
89
+ super
90
+
91
+ # Message time (e.g. history)
92
+ time = nil
93
+ msg.each_element('x') { |x|
94
+ if x.kind_of?(Delay::XDelay)
95
+ time = x.stamp
96
+ end
97
+ }
98
+ sender_nick = msg.from.resource
99
+
100
+
101
+ if msg.subject
102
+ @subject = msg.subject
103
+ @subject_block.call(time, sender_nick, @subject) if @subject_block
104
+ end
105
+
106
+ if msg.body
107
+ if sender_nick.nil?
108
+ @room_message_block.call(time, msg.body) if @room_message_block
109
+ else
110
+ if msg.type == :chat
111
+ @private_message_block.call(time, msg.from.resource, msg.body) if @private_message_block
112
+ elsif msg.type == :groupchat
113
+ @message_block.call(time, msg.from.resource, msg.body) if @message_block
114
+ else
115
+ # ...?
116
+ end
117
+ end
118
+ end
119
+ end
120
+
121
+ public
122
+
123
+ ##
124
+ # Room subject/topic
125
+ # result:: [String] The subject
126
+ def subject
127
+ @subject
128
+ end
129
+
130
+ ##
131
+ # Change the room's subject/topic
132
+ #
133
+ # This will not be reflected by SimpleMUCClient#subject
134
+ # immediately, wait for SimpleMUCClient#on_subject
135
+ # s:: [String] New subject
136
+ def subject=(s)
137
+ msg = Message.new
138
+ msg.subject = s
139
+ send(msg)
140
+ end
141
+
142
+ ##
143
+ # Send a simple text message
144
+ # text:: [String] Message body
145
+ # to:: [String] Optional nick if directed to specific user
146
+ def say(text, to=nil)
147
+ send(Message.new(nil, text), to)
148
+ end
149
+
150
+ ##
151
+ # Request the MUC to invite users to this room
152
+ #
153
+ # Sample usage:
154
+ # my_muc.invite( {'wiccarocks@shakespeare.lit/laptop' => 'This coven needs both wiccarocks and hag66.',
155
+ # 'hag66@shakespeare.lit' => 'This coven needs both hag66 and wiccarocks.'} )
156
+ # recipients:: [Hash] of [JID] => [String] Reason
157
+ def invite(recipients)
158
+ msg = Message.new
159
+ x = msg.add(XMUCUser.new)
160
+ recipients.each { |jid,reason|
161
+ x.add(XMUCUserInvite.new(jid, reason))
162
+ }
163
+ send(msg)
164
+ end
165
+
166
+ ##
167
+ # Administratively remove one or more users from the room.
168
+ #
169
+ # Will wait for response, possibly raising ServerError
170
+ #
171
+ # Sample usage:
172
+ # my_muc.kick 'pistol', 'Avaunt, you cullion!'
173
+ # my_muc.kick(['Bill', 'Linus'], 'Stop flaming')
174
+ #
175
+ # recipients:: [Array] of, or single [String]: Nicks
176
+ # reason:: [String] Kick reason
177
+ def kick(recipients, reason)
178
+ recipients = [recipients] unless recipients.kind_of? Array
179
+ items = recipients.collect { |recipient|
180
+ item = IqQueryMUCAdminItem.new
181
+ item.nick = recipient
182
+ item.role = :none
183
+ item.reason = reason
184
+ item
185
+ }
186
+ send_affiliations(items)
187
+ end
188
+
189
+ ##
190
+ # Administratively ban one or more user jids from the room.
191
+ #
192
+ # Will wait for response, possibly raising ServerError
193
+ #
194
+ # Sample usage:
195
+ # my_muc.ban 'pistol@foobar.com', 'Avaunt, you cullion!'
196
+ #
197
+ # recipients:: [Array] of, or single [String]: JIDs
198
+ # reason:: [String] Ban reason
199
+ def ban(recipients, reason)
200
+ recipients = [recipients] unless recipients.kind_of? Array
201
+ items = recipients.collect { |recipient|
202
+ item = IqQueryMUCAdminItem.new
203
+ item.jid = recipient
204
+ item.affiliation = :outcast
205
+ item.reason = reason
206
+ item
207
+ }
208
+ send_affiliations(items)
209
+ end
210
+
211
+ ##
212
+ # Unban one or more user jids for the room.
213
+ #
214
+ # Will wait for response, possibly raising ServerError
215
+ #
216
+ # Sample usage:
217
+ # my_muc.unban 'pistol@foobar.com'
218
+ #
219
+ # recipients:: [Array] of, or single [String]: JIDs
220
+ def unban(recipients)
221
+ recipients = [recipients] unless recipients.kind_of? Array
222
+ items = recipients.collect { |recipient|
223
+ item = IqQueryMUCAdminItem.new
224
+ item.jid = recipient
225
+ item.affiliation = :none
226
+ item
227
+ }
228
+ send_affiliations(items)
229
+ end
230
+
231
+ ##
232
+ # Promote one or more users in the room to moderator.
233
+ #
234
+ # Will wait for response, possibly raising ServerError
235
+ #
236
+ # Sample usage:
237
+ # my_muc.promote 'pistol'
238
+ #
239
+ # recipients:: [Array] of, or single [String]: Nicks
240
+ def promote(recipients)
241
+ recipients = [recipients] unless recipients.kind_of? Array
242
+ items = recipients.collect { |recipient|
243
+ item = IqQueryMUCAdminItem.new
244
+ item.nick = recipient
245
+ item.role = :moderator
246
+ item
247
+ }
248
+ send_affiliations(items)
249
+ end
250
+
251
+ ##
252
+ # Demote one or more users in the room to participant.
253
+ #
254
+ # Will wait for response, possibly raising ServerError
255
+ #
256
+ # Sample usage:
257
+ # my_muc.demote 'pistol'
258
+ #
259
+ # recipients:: [Array] of, or single [String]: Nicks
260
+ def demote(recipients)
261
+ recipients = [recipients] unless recipients.kind_of? Array
262
+ items = recipients.collect { |recipient|
263
+ item = IqQueryMUCAdminItem.new
264
+ item.nick = recipient
265
+ item.role = :participant
266
+ item
267
+ }
268
+ send_affiliations(items)
269
+ end
270
+
271
+ ##
272
+ # Block to be invoked when a message *from* the room arrives
273
+ #
274
+ # Example:
275
+ # Astro has joined this session
276
+ # block:: Takes two arguments: time, text
277
+ def on_room_message(&block)
278
+ @room_message_block = block
279
+ end
280
+
281
+ ##
282
+ # Block to be invoked when a message from a participant to
283
+ # the whole room arrives
284
+ # block:: Takes three arguments: time, sender nickname, text
285
+ def on_message(&block)
286
+ @message_block = block
287
+ end
288
+
289
+ ##
290
+ # Block to be invoked when a private message from a participant
291
+ # to you arrives.
292
+ # block:: Takes three arguments: time, sender nickname, text
293
+ def on_private_message(&block)
294
+ @private_message_block = block
295
+ end
296
+
297
+ ##
298
+ # Block to be invoked when somebody sets a new room subject
299
+ # block:: Takes three arguments: time, nickname, new subject
300
+ def on_subject(&block)
301
+ @subject_block = block
302
+ end
303
+
304
+ ##
305
+ # Block to be called when somebody enters the room
306
+ #
307
+ # If there is a non-nil time passed to the block, chances
308
+ # are great that this is initial presence from a participant
309
+ # after you have joined the room.
310
+ # block:: Takes two arguments: time, nickname
311
+ def on_join(&block)
312
+ @join_block = block
313
+ end
314
+
315
+ ##
316
+ # Block to be called when somebody leaves the room
317
+ # block:: Takes two arguments: time, nickname
318
+ def on_leave(&block)
319
+ @leave_block = block
320
+ end
321
+
322
+ ##
323
+ # Block to be called when *you* leave the room
324
+ #
325
+ # Deactivation occurs *afterwards*.
326
+ # block:: Takes one argument: time
327
+ def on_self_leave(&block)
328
+ @self_leave_block = block
329
+ end
330
+ end
331
+ end
332
+ end
@@ -0,0 +1,23 @@
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/x'
6
+
7
+ module Jabber
8
+ module MUC
9
+ class IqQueryMUCAdmin < IqQuery
10
+ name_xmlns 'query', 'http://jabber.org/protocol/muc#admin'
11
+
12
+ include XParent
13
+
14
+ def items
15
+ r = []
16
+ each_element('item') { |item|
17
+ r << item if item.kind_of? IqQueryMUCAdminItem
18
+ }
19
+ r
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
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/muc/item'
6
+
7
+ module Jabber
8
+ module MUC
9
+ class IqQueryMUCAdminItem < MUC::UserItem
10
+ name_xmlns 'item', 'http://jabber.org/protocol/muc#admin'
11
+
12
+ def initialize(affiliation=nil, role=nil, jid=nil)
13
+ super()
14
+ set_affiliation(affiliation)
15
+ set_role(role)
16
+ set_jid(jid)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
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/x'
6
+
7
+ module Jabber
8
+ module MUC
9
+ class IqQueryMUCOwner < IqQuery
10
+ name_xmlns 'query', 'http://jabber.org/protocol/muc#owner'
11
+
12
+ include XParent
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,143 @@
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
+ module Jabber
6
+ module MUC
7
+ ##
8
+ # Don't use this. It is the base class (unifying shared
9
+ # attributes) of XMUCUserItem and IqQueryMUCAdminItem
10
+ class UserItem < XMPPElement
11
+ def affiliation
12
+ case attributes['affiliation']
13
+ when 'admin' then :admin
14
+ when 'member' then :member
15
+ when 'none' then :none
16
+ when 'outcast' then :outcast
17
+ when 'owner' then :owner
18
+ else nil
19
+ end
20
+ end
21
+
22
+ def affiliation=(v)
23
+ case v
24
+ when :admin then attributes['affiliation'] = 'admin'
25
+ when :member then attributes['affiliation'] = 'member'
26
+ when :none then attributes['affiliation'] = 'none'
27
+ when :outcast then attributes['affiliation'] = 'outcast'
28
+ when :owner then attributes['affiliation'] = 'owner'
29
+ else attributes['affiliation'] = nil
30
+ end
31
+ end
32
+
33
+ def set_affiliation(v)
34
+ self.affiliation = v
35
+ self
36
+ end
37
+
38
+ def jid
39
+ attributes['jid'].nil? ? nil : JID.new(attributes['jid'])
40
+ end
41
+
42
+ def jid=(j)
43
+ attributes['jid'] = j.nil? ? nil : j.to_s
44
+ end
45
+
46
+ def set_jid(j)
47
+ self.jid = j
48
+ self
49
+ end
50
+
51
+ def nick
52
+ attributes['nick']
53
+ end
54
+
55
+ def nick=(n)
56
+ attributes['nick'] = n
57
+ end
58
+
59
+ def set_nick(n)
60
+ self.nick = n
61
+ self
62
+ end
63
+
64
+ def role
65
+ case attributes['role']
66
+ when 'moderator' then :moderator
67
+ when 'none' then :none
68
+ when 'participant' then :participant
69
+ when 'visitor' then :visitor
70
+ else nil
71
+ end
72
+ end
73
+
74
+ def role=(r)
75
+ case r
76
+ when :moderator then attributes['role'] = 'moderator'
77
+ when :none then attributes['role'] = 'none'
78
+ when :participant then attributes['role'] = 'participant'
79
+ when :visitor then attributes['role'] = 'visitor'
80
+ else attributes['role'] = nil
81
+ end
82
+ end
83
+
84
+ def set_role(r)
85
+ self.role = r
86
+ self
87
+ end
88
+
89
+ def reason
90
+ text = nil
91
+ each_element('reason') { |xe| text = xe.text }
92
+ text
93
+ end
94
+
95
+ def reason=(s)
96
+ delete_elements('reasion')
97
+ add_element('reason').text = s
98
+ end
99
+
100
+ def set_reason(s)
101
+ self.reason = s
102
+ self
103
+ end
104
+
105
+ def continue
106
+ c = nil
107
+ each_element('continue') { |xe| c = xe }
108
+ c.nil?
109
+ end
110
+
111
+ def continue=(c)
112
+ delete_elements('continue')
113
+ add_element('continue') if c
114
+ end
115
+
116
+ def set_continue(c)
117
+ self.continue = c
118
+ self
119
+ end
120
+
121
+ def actors
122
+ a = []
123
+ each_element('actor') { |xe|
124
+ a.push(JID.new(xe.attributes['jid']))
125
+ }
126
+ a
127
+ end
128
+
129
+ def actors=(a)
130
+ delete_elements('actor')
131
+ a.each { |jid|
132
+ e = add_element('actor')
133
+ e.attributes['jid'] = jid.to_s
134
+ }
135
+ end
136
+
137
+ def set_actors(a)
138
+ self.actors = a
139
+ self
140
+ end
141
+ end
142
+ end
143
+ end