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.
- data/Authors.txt +4 -0
- data/Changelog.txt +11 -0
- data/Copyright.txt +16 -0
- data/Rakefile +16 -25
- data/Readme.markdown +1 -3
- data/bin/cerberus +5 -0
- data/lib/cerberus/builder/bjam.rb +1 -3
- data/lib/cerberus/builder/maven2.rb +0 -1
- data/lib/cerberus/builder/rake.rb +1 -1
- data/lib/cerberus/builder/rspec.rb +0 -1
- data/lib/cerberus/builder/ruby_base.rb +0 -1
- data/lib/cerberus/component_lazy_loader.rb +6 -2
- data/lib/cerberus/config.example.yml +1 -0
- data/lib/cerberus/constants.rb +2 -2
- data/lib/cerberus/manager.rb +7 -1
- data/lib/cerberus/publisher/mail.rb +4 -4
- data/lib/cerberus/publisher/twitter.rb +0 -1
- data/lib/cerberus/scm/base.rb +19 -0
- data/lib/cerberus/scm/bzr.rb +62 -0
- data/lib/cerberus/scm/cvs.rb +2 -7
- data/lib/cerberus/scm/darcs.rb +2 -11
- data/lib/cerberus/scm/git.rb +6 -14
- data/lib/cerberus/scm/perforce.rb +4 -4
- data/lib/cerberus/scm/svn.rb +2 -7
- data/lib/cerberus/utils.rb +5 -0
- data/lib/vendor/irc/README +23 -0
- data/lib/vendor/irc/lib/IRC.rb +164 -0
- data/lib/vendor/irc/lib/IRCChannel.rb +33 -0
- data/lib/vendor/irc/lib/IRCConnection.rb +134 -0
- data/lib/vendor/irc/lib/IRCEvent.rb +91 -0
- data/lib/vendor/irc/lib/IRCUser.rb +23 -0
- data/lib/vendor/irc/lib/IRCUtil.rb +49 -0
- data/lib/vendor/irc/lib/eventmap.yml +247 -0
- data/lib/vendor/twitter/CHANGES +129 -0
- data/lib/vendor/twitter/MIT-LICENSE +20 -0
- data/lib/vendor/twitter/README +37 -0
- data/lib/vendor/twitter/TODO +7 -0
- data/lib/vendor/twitter/lib/twitter.rb +34 -0
- data/lib/vendor/twitter/lib/twitter/client.rb +24 -0
- data/lib/vendor/twitter/lib/twitter/client/account.rb +24 -0
- data/lib/vendor/twitter/lib/twitter/client/auth.rb +27 -0
- data/lib/vendor/twitter/lib/twitter/client/base.rb +93 -0
- data/lib/vendor/twitter/lib/twitter/client/blocks.rb +35 -0
- data/lib/vendor/twitter/lib/twitter/client/favorites.rb +53 -0
- data/lib/vendor/twitter/lib/twitter/client/friendship.rb +35 -0
- data/lib/vendor/twitter/lib/twitter/client/graph.rb +37 -0
- data/lib/vendor/twitter/lib/twitter/client/messaging.rb +79 -0
- data/lib/vendor/twitter/lib/twitter/client/profile.rb +29 -0
- data/lib/vendor/twitter/lib/twitter/client/search.rb +27 -0
- data/lib/vendor/twitter/lib/twitter/client/status.rb +51 -0
- data/lib/vendor/twitter/lib/twitter/client/timeline.rb +72 -0
- data/lib/vendor/twitter/lib/twitter/client/user.rb +65 -0
- data/lib/vendor/twitter/lib/twitter/config.rb +77 -0
- data/lib/vendor/twitter/lib/twitter/console.rb +31 -0
- data/lib/vendor/twitter/lib/twitter/core.rb +137 -0
- data/lib/vendor/twitter/lib/twitter/ext.rb +2 -0
- data/lib/vendor/twitter/lib/twitter/ext/stdlib.rb +52 -0
- data/lib/vendor/twitter/lib/twitter/extras.rb +39 -0
- data/lib/vendor/twitter/lib/twitter/meta.rb +56 -0
- data/lib/vendor/twitter/lib/twitter/model.rb +360 -0
- data/lib/vendor/twitter/lib/twitter/version.rb +19 -0
- data/lib/vendor/twitter/spec/twitter/client/account_spec.rb +28 -0
- data/lib/vendor/twitter/spec/twitter/client/auth_spec.rb +34 -0
- data/lib/vendor/twitter/spec/twitter/client/base_spec.rb +242 -0
- data/lib/vendor/twitter/spec/twitter/client/blocks_spec.rb +76 -0
- data/lib/vendor/twitter/spec/twitter/client/favorites_spec.rb +183 -0
- data/lib/vendor/twitter/spec/twitter/client/friendship_spec.rb +76 -0
- data/lib/vendor/twitter/spec/twitter/client/graph_spec.rb +67 -0
- data/lib/vendor/twitter/spec/twitter/client/messaging_spec.rb +135 -0
- data/lib/vendor/twitter/spec/twitter/client/profile_spec.rb +91 -0
- data/lib/vendor/twitter/spec/twitter/client/search_spec.rb +68 -0
- data/lib/vendor/twitter/spec/twitter/client/status_spec.rb +119 -0
- data/lib/vendor/twitter/spec/twitter/client/timeline_spec.rb +79 -0
- data/lib/vendor/twitter/spec/twitter/client/user_spec.rb +203 -0
- data/lib/vendor/twitter/spec/twitter/client_spec.rb +2 -0
- data/lib/vendor/twitter/spec/twitter/config_spec.rb +86 -0
- data/lib/vendor/twitter/spec/twitter/console_spec.rb +15 -0
- data/lib/vendor/twitter/spec/twitter/core_spec.rb +127 -0
- data/lib/vendor/twitter/spec/twitter/ext/stdlib_spec.rb +59 -0
- data/lib/vendor/twitter/spec/twitter/extras_spec.rb +46 -0
- data/lib/vendor/twitter/spec/twitter/meta_spec.rb +90 -0
- data/lib/vendor/twitter/spec/twitter/model_spec.rb +508 -0
- data/lib/vendor/twitter/spec/twitter/version_spec.rb +19 -0
- data/lib/vendor/xmpp4r/CHANGELOG +83 -0
- data/lib/vendor/xmpp4r/COPYING +340 -0
- data/lib/vendor/xmpp4r/LICENSE +59 -0
- data/lib/vendor/xmpp4r/README.rdoc +110 -0
- data/lib/vendor/xmpp4r/README_ruby19.txt +43 -0
- data/lib/vendor/xmpp4r/Rakefile +262 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/README +56 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventure.rb +23 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventuremuc.rb +136 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/cube.xml +15 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/tower.xml +69 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/world.rb +424 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.conf +11 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.rb +346 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/getonline.rb +56 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/gtkmucclient.rb +315 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/migrate.rb +88 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/minimuc.rb +266 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/index.xsl +235 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/pep-aggregator.rb +147 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/recvfile.rb +84 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/rosterdiscovery.rb +129 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.conf +10 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.rb +72 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr.rb +51 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_jabber.rb +43 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_test.rb +10 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/versionpoll.rb +90 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmpping.rb +146 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmppingrc.sample +14 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/change_password.rb +41 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/client.rb +70 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/component.rb +11 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/echo.rb +37 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/jabbersend.rb +41 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mass_sender.rb +68 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/muc_owner_config.rb +12 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucinfo.rb +41 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucsimplebot.rb +82 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/register.rb +42 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/remove_registration.rb +18 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/roster.rb +44 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterprint.rb +50 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterrename.rb +34 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterwatch.rb +171 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/send_vcard.rb +67 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_client.rb +56 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_server.rb +58 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/versionbot.rb +75 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r.rb +116 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/base64.rb +32 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams.rb +15 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb +319 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/base.rb +257 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/initiator.rb +31 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/target.rb +47 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb +152 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb +86 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb +198 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb +65 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb +73 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb.orig +62 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/bytestreams.rb +170 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/si.rb +206 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/callbacks.rb +124 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/caps.rb +1 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/caps/c.rb +53 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/generator.rb +160 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/helper.rb +87 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/client.rb +317 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/command/helper/responder.rb +53 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/command/iq/command.rb +154 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/component.rb +103 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/connection.rb +219 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms.rb +5 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms/x/data.rb +297 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/debuglog.rb +42 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/delay.rb +5 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/delay/x/delay.rb +99 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/discovery.rb +7 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/helper/responder.rb +165 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoinfo.rb +211 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoitems.rb +147 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/errors.rb +281 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation.rb +5 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation/iq/feature.rb +28 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/framework/base.rb +55 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/framework/bot.rb +148 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding.rb +5 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding/client.rb +285 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/idgenerator.rb +37 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/iq.rb +221 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/jid.rb +167 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/message.rb +148 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc.rb +14 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucbrowser.rb +92 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucclient.rb +462 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/simplemucclient.rb +332 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadmin.rb +23 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadminitem.rb +20 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucowner.rb +15 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/item.rb +143 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/muc.rb +70 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuserinvite.rb +60 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuseritem.rb +36 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/presence.rb +232 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub.rb +8 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb +86 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/event.rb +49 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/item.rb +35 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/items.rb +44 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/node_config.rb +48 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/publish.rb +24 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription.rb +62 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription_config.rb +67 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/unsubscribe.rb +48 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodebrowser.rb +130 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodehelper.rb +156 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb +417 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/iq/pubsub.rb +19 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/query.rb +15 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rexmladdons.rb +151 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/roster.rb +7 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/roster/helper/roster.rb +519 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/roster/iq/roster.rb +215 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/roster/x/roster.rb +138 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc.rb +2 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/client.rb +123 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/server.rb +74 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/xmlrpcaddons.rb +67 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/iq/rpc.rb +23 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/sasl.rb +237 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/semaphore.rb +38 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/stream.rb +497 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/streamparser.rb +77 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/tune.rb +2 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/tune/helper/helper.rb +58 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/tune/tune.rb +113 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/vcard.rb +6 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/helper/vcard.rb +84 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/iq/vcard.rb +109 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/version.rb +7 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/responder.rb +72 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/simpleresponder.rb +44 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/version/iq/version.rb +105 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/x.rb +37 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml.rb +1 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml/html.rb +115 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xmpp4r.rb +18 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xmppelement.rb +168 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xmppstanza.rb +162 -0
- data/lib/vendor/xmpp4r/setup.rb +1586 -0
- data/lib/vendor/xmpp4r/test/bytestreams/tc_ibb.rb +186 -0
- data/lib/vendor/xmpp4r/test/bytestreams/tc_socks5bytestreams.rb +113 -0
- data/lib/vendor/xmpp4r/test/caps/tc_helper.rb +156 -0
- data/lib/vendor/xmpp4r/test/dataforms/tc_data.rb +81 -0
- data/lib/vendor/xmpp4r/test/delay/tc_xdelay.rb +51 -0
- data/lib/vendor/xmpp4r/test/discovery/tc_responder.rb +91 -0
- data/lib/vendor/xmpp4r/test/lib/assert_equal_xml.rb +14 -0
- data/lib/vendor/xmpp4r/test/lib/clienttester.rb +120 -0
- data/lib/vendor/xmpp4r/test/muc/tc_muc_mucclient.rb +830 -0
- data/lib/vendor/xmpp4r/test/muc/tc_muc_simplemucclient.rb +114 -0
- data/lib/vendor/xmpp4r/test/muc/tc_mucowner.rb +50 -0
- data/lib/vendor/xmpp4r/test/pubsub/tc_helper.rb +662 -0
- data/lib/vendor/xmpp4r/test/pubsub/tc_nodeconfig.rb +54 -0
- data/lib/vendor/xmpp4r/test/pubsub/tc_subscriptionconfig.rb +41 -0
- data/lib/vendor/xmpp4r/test/roster/tc_helper.rb +514 -0
- data/lib/vendor/xmpp4r/test/roster/tc_iqqueryroster.rb +173 -0
- data/lib/vendor/xmpp4r/test/roster/tc_xroster.rb +73 -0
- data/lib/vendor/xmpp4r/test/rpc/tc_helper.rb +96 -0
- data/lib/vendor/xmpp4r/test/tc_callbacks.rb +129 -0
- data/lib/vendor/xmpp4r/test/tc_class_names.rb +146 -0
- data/lib/vendor/xmpp4r/test/tc_client.rb +30 -0
- data/lib/vendor/xmpp4r/test/tc_errors.rb +146 -0
- data/lib/vendor/xmpp4r/test/tc_idgenerator.rb +30 -0
- data/lib/vendor/xmpp4r/test/tc_iq.rb +113 -0
- data/lib/vendor/xmpp4r/test/tc_iqquery.rb +31 -0
- data/lib/vendor/xmpp4r/test/tc_jid.rb +204 -0
- data/lib/vendor/xmpp4r/test/tc_message.rb +116 -0
- data/lib/vendor/xmpp4r/test/tc_presence.rb +150 -0
- data/lib/vendor/xmpp4r/test/tc_rexml.rb +139 -0
- data/lib/vendor/xmpp4r/test/tc_stream.rb +229 -0
- data/lib/vendor/xmpp4r/test/tc_streamComponent.rb +95 -0
- data/lib/vendor/xmpp4r/test/tc_streamError.rb +131 -0
- data/lib/vendor/xmpp4r/test/tc_streamSend.rb +59 -0
- data/lib/vendor/xmpp4r/test/tc_streamparser.rb +112 -0
- data/lib/vendor/xmpp4r/test/tc_xmppstanza.rb +135 -0
- data/lib/vendor/xmpp4r/test/ts_xmpp4r.rb +53 -0
- data/lib/vendor/xmpp4r/test/tune/tc_helper_recv.rb +84 -0
- data/lib/vendor/xmpp4r/test/tune/tc_helper_send.rb +74 -0
- data/lib/vendor/xmpp4r/test/tune/tc_tune.rb +79 -0
- data/lib/vendor/xmpp4r/test/vcard/tc_helper.rb +49 -0
- data/lib/vendor/xmpp4r/test/vcard/tc_iqvcard.rb +62 -0
- data/lib/vendor/xmpp4r/test/version/tc_helper.rb +60 -0
- data/lib/vendor/xmpp4r/test/version/tc_iqqueryversion.rb +97 -0
- data/lib/vendor/xmpp4r/test/xhtml/tc_html.rb +41 -0
- data/lib/vendor/xmpp4r/tools/gen_requires.bash +31 -0
- data/lib/vendor/xmpp4r/tools/xmpp4r-gemspec-test.rb +11 -0
- data/lib/vendor/xmpp4r/xmpp4r.gemspec +291 -0
- data/test/jabber_publisher_test.rb +1 -1
- data/test/mail_publisher_test.rb +2 -2
- data/test/mock/twitter.rb +0 -1
- data/test/rspec_builder_test.rb +39 -2
- data/test/rss_publisher_test.rb +1 -1
- data/test/twitter_publisher_test.rb +1 -1
- metadata +268 -53
- data/lib/cerberus/publisher/gmailer.rb +0 -17
|
@@ -0,0 +1,77 @@
|
|
|
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 'rexml/parsers/sax2parser'
|
|
6
|
+
require 'rexml/source'
|
|
7
|
+
require 'xmpp4r/rexmladdons'
|
|
8
|
+
|
|
9
|
+
module Jabber
|
|
10
|
+
|
|
11
|
+
##
|
|
12
|
+
# The StreamParser uses REXML to parse the incoming XML stream
|
|
13
|
+
# of the Jabber protocol and fires XMPPStanza at the Connection
|
|
14
|
+
# instance.
|
|
15
|
+
#
|
|
16
|
+
class StreamParser
|
|
17
|
+
# status if the parser is started
|
|
18
|
+
attr_reader :started
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# Constructs a parser for the supplied stream (socket input)
|
|
22
|
+
#
|
|
23
|
+
# stream:: [IO] Socket input stream
|
|
24
|
+
# listener:: [Object.receive(XMPPStanza)] The listener (usually a Jabber::Protocol::Connection instance)
|
|
25
|
+
#
|
|
26
|
+
def initialize(stream, listener)
|
|
27
|
+
@stream = stream
|
|
28
|
+
@listener = listener
|
|
29
|
+
@current = nil
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
##
|
|
33
|
+
# Begins parsing the XML stream and does not return until
|
|
34
|
+
# the stream closes.
|
|
35
|
+
#
|
|
36
|
+
def parse
|
|
37
|
+
@started = false
|
|
38
|
+
begin
|
|
39
|
+
parser = REXML::Parsers::SAX2Parser.new @stream
|
|
40
|
+
|
|
41
|
+
parser.listen( :start_element ) do |uri, localname, qname, attributes|
|
|
42
|
+
e = REXML::Element.new(qname)
|
|
43
|
+
e.add_attributes attributes
|
|
44
|
+
@current = @current.nil? ? e : @current.add_element(e)
|
|
45
|
+
|
|
46
|
+
if @current.name == 'stream' and !@started
|
|
47
|
+
@started = true
|
|
48
|
+
@listener.receive(@current)
|
|
49
|
+
@current = nil
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
parser.listen( :end_element ) do |uri, localname, qname|
|
|
54
|
+
if qname == 'stream:stream' and @current.nil?
|
|
55
|
+
@started = false
|
|
56
|
+
@listener.parser_end
|
|
57
|
+
else
|
|
58
|
+
@listener.receive(@current) unless @current.parent
|
|
59
|
+
@current = @current.parent
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
parser.listen( :characters ) do | text |
|
|
64
|
+
@current.add(REXML::Text.new(text.to_s, @current.whitespace, nil, true)) if @current
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
parser.listen( :cdata ) do | text |
|
|
68
|
+
@current.add(REXML::CData.new(text)) if @current
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
parser.parse
|
|
72
|
+
rescue REXML::ParseException => e
|
|
73
|
+
@listener.parse_failure(e)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
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'
|
|
6
|
+
require 'xmpp4r/pubsub'
|
|
7
|
+
require 'xmpp4r/tune/tune'
|
|
8
|
+
|
|
9
|
+
module Jabber
|
|
10
|
+
module UserTune
|
|
11
|
+
##
|
|
12
|
+
# A Helper for XEP-0118 User Tune
|
|
13
|
+
#
|
|
14
|
+
# Use this helper to send user tunes, or receive them from a
|
|
15
|
+
# specified jid. Described at http://www.xmpp.org/extensions/xep-0118.html
|
|
16
|
+
#
|
|
17
|
+
# For example:
|
|
18
|
+
# <pre>
|
|
19
|
+
# h = UserTune::Helper( @client, 'radio1@hug.hellomatty.com' )
|
|
20
|
+
# h.add_usertune_callback do |tune|
|
|
21
|
+
# puts "Now playing: #{tune.title} by #{tune.artist}"
|
|
22
|
+
# end
|
|
23
|
+
# </pre>
|
|
24
|
+
#
|
|
25
|
+
# Also see the examples provided.
|
|
26
|
+
class Helper < PubSub::ServiceHelper
|
|
27
|
+
##
|
|
28
|
+
# Send out the tune currently playing.
|
|
29
|
+
#
|
|
30
|
+
# track:: [Jabber::UserTune::Tune] the tune currently playing
|
|
31
|
+
def now_playing(track)
|
|
32
|
+
item = Jabber::PubSub::Item.new()
|
|
33
|
+
item.add(track)
|
|
34
|
+
|
|
35
|
+
publish_item_to(NS_USERTUNE, item)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
##
|
|
39
|
+
# Use this method to indicate that you have stopped playing
|
|
40
|
+
# a tune.
|
|
41
|
+
def stop_playing
|
|
42
|
+
now_playing(Jabber::UserTune::Tune.new())
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
##
|
|
46
|
+
# Add a callback that will be invoked when a tune is received
|
|
47
|
+
# from the jid specified when you constructed the Helper.
|
|
48
|
+
def add_usertune_callback(prio = 200, ref = nil, &block)
|
|
49
|
+
add_event_callback(prio, ref) do |event|
|
|
50
|
+
tune = event.first_element('items/item/tune')
|
|
51
|
+
if tune
|
|
52
|
+
block.call(tune)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
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 'rexml/element'
|
|
7
|
+
|
|
8
|
+
module Jabber
|
|
9
|
+
module UserTune
|
|
10
|
+
NS_USERTUNE = 'http://jabber.org/protocol/tune'
|
|
11
|
+
|
|
12
|
+
##
|
|
13
|
+
# The <tune> XMPP element, as defined in XEP-0118 User Tune
|
|
14
|
+
#
|
|
15
|
+
# See http://www.xmpp.org/extensions/xep-0118.html - this element
|
|
16
|
+
# encapsulates metadata (artist, track etc) about a tune the user
|
|
17
|
+
# is currently playing. These are expressed as child elements
|
|
18
|
+
# such as <artist>, <title> etc which are also managed by this class.
|
|
19
|
+
#
|
|
20
|
+
# If the element has no children then it indicates that the user
|
|
21
|
+
# has stopped playing a tune. Use the Tune#playing? method to discover
|
|
22
|
+
# this?
|
|
23
|
+
class Tune < XMPPElement
|
|
24
|
+
name_xmlns 'tune', NS_USERTUNE
|
|
25
|
+
force_xmlns true
|
|
26
|
+
|
|
27
|
+
##
|
|
28
|
+
# Construct a new <tune> element.
|
|
29
|
+
#
|
|
30
|
+
# Supply no arguments to make an
|
|
31
|
+
# empty element to indicate that tune playing has stopped.
|
|
32
|
+
#
|
|
33
|
+
# artist:: [String] the artist or performer of the song or piece
|
|
34
|
+
# title:: [String] the title of the song or piece
|
|
35
|
+
# length:: [Fixnum] the duration of the song or piece in seconds
|
|
36
|
+
# track:: [String] a unique identifier for the tune; e.g., the track number within a collection or the specific URI for the object (e.g., a stream or audio file)
|
|
37
|
+
# source:: [String] the collection (e.g., album) or other source (e.g., a band website that hosts streams or audio files)
|
|
38
|
+
# uri:: [String] a URI or URL pointing to information about the song, collection, or artist
|
|
39
|
+
# rating:: [Numeric] a number indicating how much you like this song - will be clamped into an integer 0 <= x <= 10
|
|
40
|
+
def initialize(artist = nil, title = nil, length = nil, track = nil, source = nil, uri = nil, rating = nil)
|
|
41
|
+
super()
|
|
42
|
+
|
|
43
|
+
add_element(REXML::Element.new('artist')).text = artist if artist
|
|
44
|
+
|
|
45
|
+
add_element(REXML::Element.new('title')).text = title if title
|
|
46
|
+
|
|
47
|
+
add_element(REXML::Element.new('length')).text = length.to_s if length
|
|
48
|
+
|
|
49
|
+
add_element(REXML::Element.new('track')).text = track if track
|
|
50
|
+
|
|
51
|
+
add_element(REXML::Element.new('source')).text = source if source
|
|
52
|
+
|
|
53
|
+
add_element(REXML::Element.new('uri')).text = uri if uri
|
|
54
|
+
|
|
55
|
+
if rating and rating.kind_of?(Numeric)
|
|
56
|
+
r = rating.to_i
|
|
57
|
+
r = 0 if r < 0
|
|
58
|
+
r = 10 if r > 10
|
|
59
|
+
add_element(REXML::Element.new('rating')).text = r.to_s
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
##
|
|
65
|
+
# Returns true if a tune is currently playing, otherwise false.
|
|
66
|
+
def playing?
|
|
67
|
+
(elements.size > 0)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
##
|
|
71
|
+
# Get the artist for this tune.
|
|
72
|
+
def artist
|
|
73
|
+
first_element('artist').text if first_element('artist')
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
##
|
|
77
|
+
# Get the title of this tune.
|
|
78
|
+
def title
|
|
79
|
+
first_element('title').text if first_element('title')
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
##
|
|
83
|
+
# Get the length of this tune, in seconds.
|
|
84
|
+
def length
|
|
85
|
+
first_element('length').text.to_i if first_element('length')
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
##
|
|
89
|
+
# Get an identitier for this tune.
|
|
90
|
+
def track
|
|
91
|
+
first_element('track').text if first_element('track')
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
##
|
|
95
|
+
# Get the source of this tune, such as an album.
|
|
96
|
+
def source
|
|
97
|
+
first_element('source').text if first_element('source')
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
##
|
|
101
|
+
# Get a URI that represents this tune.
|
|
102
|
+
def uri
|
|
103
|
+
first_element('uri').text if first_element('uri')
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
##
|
|
107
|
+
# Get the rating for this track
|
|
108
|
+
def rating
|
|
109
|
+
first_element('rating').text.to_i if first_element('rating')
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
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 Vcard
|
|
9
|
+
##
|
|
10
|
+
# The Vcard helper retrieves vCards
|
|
11
|
+
class Helper
|
|
12
|
+
##
|
|
13
|
+
# Initialize a new Vcard helper
|
|
14
|
+
def initialize(stream)
|
|
15
|
+
@stream = stream
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
##
|
|
19
|
+
# Retrieve vCard of an entity
|
|
20
|
+
#
|
|
21
|
+
# Raises exception upon retrieval error, please catch that!
|
|
22
|
+
# (The exception is ServerError and is raisen by
|
|
23
|
+
# Stream#send_with_id.
|
|
24
|
+
#
|
|
25
|
+
# Usage of Threads is suggested here as vCards can be very
|
|
26
|
+
# big (see <tt>/iq/vCard/PHOTO/BINVAL</tt>).
|
|
27
|
+
#
|
|
28
|
+
# jid:: [Jabber::JID] or nil (should be stripped, nil for the client's own vCard)
|
|
29
|
+
# result:: [Jabber::IqVcard] or nil (nil results may be handled as empty vCards)
|
|
30
|
+
def get(jid=nil)
|
|
31
|
+
res = nil
|
|
32
|
+
request = Iq.new(:get, jid)
|
|
33
|
+
request.from = @stream.jid # Enable components to use this
|
|
34
|
+
request.add(IqVcard.new)
|
|
35
|
+
@stream.send_with_id(request) { |answer|
|
|
36
|
+
# No check for sender or queryns needed (see send_with_id)
|
|
37
|
+
if answer.type == :result
|
|
38
|
+
res = answer.vcard
|
|
39
|
+
true
|
|
40
|
+
else
|
|
41
|
+
false
|
|
42
|
+
end
|
|
43
|
+
}
|
|
44
|
+
res
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
##
|
|
48
|
+
# Set your own vCard (Clients only)
|
|
49
|
+
#
|
|
50
|
+
# Raises exception when setting fails
|
|
51
|
+
#
|
|
52
|
+
# Usage of Threads suggested here, too. The function
|
|
53
|
+
# waits for approval from the server.
|
|
54
|
+
#
|
|
55
|
+
# iqvcard:: [Jabber::IqVcard]
|
|
56
|
+
def set(iqvcard)
|
|
57
|
+
iq = Iq.new(:set)
|
|
58
|
+
iq.add(iqvcard)
|
|
59
|
+
|
|
60
|
+
@stream.send_with_id(iq) { |answer|
|
|
61
|
+
if answer.type == :result
|
|
62
|
+
true
|
|
63
|
+
else
|
|
64
|
+
false
|
|
65
|
+
end
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
##
|
|
70
|
+
# Quickly initialize a Vcard helper and get
|
|
71
|
+
# a vCard. See Vcard#get
|
|
72
|
+
def self.get(stream, jid=nil)
|
|
73
|
+
new(stream).get(jid)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
##
|
|
77
|
+
# Quickly initialize a Vcard helper and set
|
|
78
|
+
# your vCard. See Vcard#set
|
|
79
|
+
def self.set(stream, iqvcard)
|
|
80
|
+
new(stream).set(iqvcard)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
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
|
+
require 'xmpp4r/base64'
|
|
7
|
+
|
|
8
|
+
module Jabber
|
|
9
|
+
module Vcard
|
|
10
|
+
##
|
|
11
|
+
# vCard container for User Information
|
|
12
|
+
# (can be specified by users themselves, mostly kept on servers)
|
|
13
|
+
# (JEP 0054)
|
|
14
|
+
class IqVcard < XMPPElement
|
|
15
|
+
name_xmlns 'vCard', 'vcard-temp'
|
|
16
|
+
force_xmlns true
|
|
17
|
+
|
|
18
|
+
##
|
|
19
|
+
# Initialize a <vCard/> element
|
|
20
|
+
# fields:: [Hash] Initialize with keys as XPath element names and values for element texts
|
|
21
|
+
def initialize(fields=nil)
|
|
22
|
+
super()
|
|
23
|
+
|
|
24
|
+
unless fields.nil?
|
|
25
|
+
fields.each { |name,value|
|
|
26
|
+
self[name] = value
|
|
27
|
+
}
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
##
|
|
32
|
+
# Get an elements/fields text
|
|
33
|
+
#
|
|
34
|
+
# vCards have too much possible children, so ask for them here
|
|
35
|
+
# and extract the result with iqvcard.element('...').text
|
|
36
|
+
# name:: [String] XPath
|
|
37
|
+
def [](name)
|
|
38
|
+
text = nil
|
|
39
|
+
each_element(name) { |child| text = child.text }
|
|
40
|
+
text
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
##
|
|
44
|
+
# Set an elements/fields text
|
|
45
|
+
# name:: [String] XPath
|
|
46
|
+
# text:: [String] Value
|
|
47
|
+
def []=(name, text)
|
|
48
|
+
xe = self
|
|
49
|
+
name.split(/\//).each do |elementname|
|
|
50
|
+
# Does the children already exist?
|
|
51
|
+
newxe = nil
|
|
52
|
+
xe.each_element(elementname) { |child| newxe = child }
|
|
53
|
+
|
|
54
|
+
if newxe.nil?
|
|
55
|
+
# Create a new
|
|
56
|
+
xe = xe.add_element(elementname)
|
|
57
|
+
else
|
|
58
|
+
# Or take existing
|
|
59
|
+
xe = newxe
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
xe.text = text
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
##
|
|
66
|
+
# Get vCard field names
|
|
67
|
+
#
|
|
68
|
+
# Example:
|
|
69
|
+
# ["NICKNAME", "BDAY", "ORG/ORGUNIT", "PHOTO/TYPE", "PHOTO/BINVAL"]
|
|
70
|
+
#
|
|
71
|
+
# result:: [Array] of [String]
|
|
72
|
+
def fields
|
|
73
|
+
element_names(self).uniq
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
##
|
|
77
|
+
# Get the PHOTO/BINVAL (Avatar picture) field decoded from Base64
|
|
78
|
+
# result:: [String] or [nil]
|
|
79
|
+
def photo_binval
|
|
80
|
+
if (binval = self['PHOTO/BINVAL'])
|
|
81
|
+
Base64::decode64(binval)
|
|
82
|
+
else
|
|
83
|
+
nil
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
private
|
|
88
|
+
|
|
89
|
+
##
|
|
90
|
+
# Recursive helper function,
|
|
91
|
+
# returns all element names in an array, concatenated
|
|
92
|
+
# to their parent's name with a slash
|
|
93
|
+
def element_names(xe, prefix='') # :nodoc:
|
|
94
|
+
res = []
|
|
95
|
+
xe.each_element { |child|
|
|
96
|
+
if child.kind_of?(REXML::Element)
|
|
97
|
+
children = element_names(child, "#{prefix}#{child.name}/")
|
|
98
|
+
if children == []
|
|
99
|
+
res.push("#{prefix}#{child.name}")
|
|
100
|
+
else
|
|
101
|
+
res += children
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
}
|
|
105
|
+
res
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|