switchboard 0.1.0

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 (70) hide show
  1. data/History.txt +3 -0
  2. data/README.markdown +59 -0
  3. data/Rakefile +30 -0
  4. data/bin/switchboard +35 -0
  5. data/examples/echo_bot.rb +7 -0
  6. data/lib/switchboard.rb +1 -0
  7. data/lib/switchboard/client.rb +92 -0
  8. data/lib/switchboard/colors.rb +10 -0
  9. data/lib/switchboard/commands.rb +12 -0
  10. data/lib/switchboard/commands/command.rb +85 -0
  11. data/lib/switchboard/commands/config.rb +1 -0
  12. data/lib/switchboard/commands/config/config.rb +20 -0
  13. data/lib/switchboard/commands/default.rb +40 -0
  14. data/lib/switchboard/commands/disco.rb +3 -0
  15. data/lib/switchboard/commands/disco/disco.rb +13 -0
  16. data/lib/switchboard/commands/disco/info.rb +39 -0
  17. data/lib/switchboard/commands/disco/items.rb +30 -0
  18. data/lib/switchboard/commands/grep.rb +23 -0
  19. data/lib/switchboard/commands/help.rb +1 -0
  20. data/lib/switchboard/commands/help/help.rb +15 -0
  21. data/lib/switchboard/commands/last.rb +1 -0
  22. data/lib/switchboard/commands/last/last.rb +34 -0
  23. data/lib/switchboard/commands/pep.rb +3 -0
  24. data/lib/switchboard/commands/pep/location.rb +97 -0
  25. data/lib/switchboard/commands/pep/pep.rb +7 -0
  26. data/lib/switchboard/commands/pep/tune.rb +85 -0
  27. data/lib/switchboard/commands/pubsub.rb +16 -0
  28. data/lib/switchboard/commands/pubsub/affiliations.rb +34 -0
  29. data/lib/switchboard/commands/pubsub/config.rb +42 -0
  30. data/lib/switchboard/commands/pubsub/create.rb +41 -0
  31. data/lib/switchboard/commands/pubsub/delete.rb +32 -0
  32. data/lib/switchboard/commands/pubsub/info.rb +48 -0
  33. data/lib/switchboard/commands/pubsub/items.rb +40 -0
  34. data/lib/switchboard/commands/pubsub/listen.rb +20 -0
  35. data/lib/switchboard/commands/pubsub/nodes.rb +37 -0
  36. data/lib/switchboard/commands/pubsub/options.rb +40 -0
  37. data/lib/switchboard/commands/pubsub/publish.rb +44 -0
  38. data/lib/switchboard/commands/pubsub/pubsub.rb +25 -0
  39. data/lib/switchboard/commands/pubsub/purge.rb +32 -0
  40. data/lib/switchboard/commands/pubsub/retract.rb +38 -0
  41. data/lib/switchboard/commands/pubsub/subscribe.rb +34 -0
  42. data/lib/switchboard/commands/pubsub/subscriptions.rb +35 -0
  43. data/lib/switchboard/commands/pubsub/unsubscribe.rb +30 -0
  44. data/lib/switchboard/commands/register.rb +40 -0
  45. data/lib/switchboard/commands/roster.rb +5 -0
  46. data/lib/switchboard/commands/roster/add.rb +27 -0
  47. data/lib/switchboard/commands/roster/list.rb +26 -0
  48. data/lib/switchboard/commands/roster/online.rb +28 -0
  49. data/lib/switchboard/commands/roster/remove.rb +25 -0
  50. data/lib/switchboard/commands/roster/roster.rb +7 -0
  51. data/lib/switchboard/commands/unregister.rb +21 -0
  52. data/lib/switchboard/component.rb +36 -0
  53. data/lib/switchboard/core.rb +311 -0
  54. data/lib/switchboard/ext/delegate.rb +21 -0
  55. data/lib/switchboard/ext/instance_exec.rb +16 -0
  56. data/lib/switchboard/helpers/oauth_pubsub.rb +44 -0
  57. data/lib/switchboard/helpers/pubsub.rb +28 -0
  58. data/lib/switchboard/jacks.rb +7 -0
  59. data/lib/switchboard/jacks/auto_accept.rb +16 -0
  60. data/lib/switchboard/jacks/debug.rb +17 -0
  61. data/lib/switchboard/jacks/echo.rb +7 -0
  62. data/lib/switchboard/jacks/notify.rb +15 -0
  63. data/lib/switchboard/jacks/oauth_pubsub.rb +23 -0
  64. data/lib/switchboard/jacks/pubsub.rb +21 -0
  65. data/lib/switchboard/jacks/roster_debug.rb +23 -0
  66. data/lib/switchboard/settings.rb +49 -0
  67. data/lib/switchboard/switchboard.rb +12 -0
  68. data/lib/switchboard/version.rb +3 -0
  69. data/switchboard.gemspec +15 -0
  70. metadata +136 -0
@@ -0,0 +1,21 @@
1
+ class Module
2
+ # Modified version from ActiveSupport to support :with (for additional arguments)
3
+ def delegate(*methods)
4
+ options = methods.pop
5
+ unless options.is_a?(Hash) && to = options[:to]
6
+ raise ArgumentError, "Delegation needs a target. Supply an options hash with a :to key as the last argument (e.g. delegate :hello, :to => :greeter)."
7
+ end
8
+
9
+ prefix = options[:prefix] && "#{options[:prefix] == true ? to : options[:prefix]}_"
10
+ with = options[:with] || []
11
+
12
+ methods.each do |method|
13
+ module_eval(<<-EOS, "(__DELEGATION__)", 1)
14
+ def #{prefix}#{method}(*args, &block)
15
+ args += [#{with * ", "}]
16
+ #{to}.__send__(#{method.inspect}, *args, &block)
17
+ end
18
+ EOS
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ module Kernel
2
+
3
+ # Like instance_eval but allows parameters to be passed.
4
+
5
+ def instance_exec(*args, &block)
6
+ mname = "__instance_exec_#{Thread.current.object_id.abs}_#{object_id.abs}"
7
+ Object.class_eval{ define_method(mname, &block) }
8
+ begin
9
+ ret = send(mname, *args)
10
+ ensure
11
+ Object.class_eval{ undef_method(mname) } rescue nil
12
+ end
13
+ ret
14
+ end
15
+
16
+ end
@@ -0,0 +1,44 @@
1
+ begin
2
+ require 'oauth'
3
+ rescue LoadError => e
4
+ lib = e.message.split("--").last.strip
5
+ puts "#{lib} is required."
6
+ exit 1
7
+ end
8
+
9
+ require 'oauth/version'
10
+ if OAuth::VERSION < "0.3.1.4"
11
+ puts "The OAuth library must be at least version 0.3.1.4."
12
+ exit 1
13
+ end
14
+
15
+ require 'switchboard/helpers/pubsub'
16
+ require 'oauth/consumer'
17
+ require 'oauth/request_proxy/mock_request'
18
+ require 'xmpp4r/pubsub'
19
+ require 'xmpp4r/pubsub/helper/oauth_service_helper'
20
+
21
+ module Switchboard
22
+ module Helpers
23
+ module OAuthPubSubHelper
24
+ include PubSubHelper
25
+
26
+ attr_reader :oauth_consumer, :oauth_token
27
+
28
+ delegate :create_node, :create_collection_node, :delete_node,
29
+ :delete_item_from, :get_config_from, :get_options_from, :get_items_from,
30
+ :publish_item_to, :publish_item_with_id_to, :purge_items_from,
31
+ :set_config_for, :subscribe_to, :unsubscribe_from,
32
+ :to => :pubsub
33
+
34
+ def subscriptions(node = nil)
35
+ if node
36
+ # TODO this needs to be implemented in OAuthServiceHelper
37
+ pubsub.get_subscriptions_from(node)
38
+ else
39
+ pubsub.get_subscriptions_from_all_nodes
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,28 @@
1
+ require 'xmpp4r/pubsub'
2
+ # TODO this is broken in XMPP4R 0.4.0
3
+ # require 'xmpp4r/pubsub/helper/nodebrowser'
4
+
5
+ module Switchboard
6
+ module Helpers
7
+ module PubSubHelper
8
+ attr_reader :pubsub
9
+
10
+ delegate :create_node, :create_collection_node, :delete_node,
11
+ :delete_item_from, :get_config_from, :get_options_from, :get_items_from,
12
+ :publish_item_to, :publish_item_with_id_to, :purge_items_from,
13
+ :set_config_for, :subscribe_to, :unsubscribe_from,
14
+ :to => :pubsub
15
+
16
+ Switchboard::Core.hook(:pubsub_event)
17
+
18
+ def subscriptions(node = nil)
19
+ # NOTE: node-specific subscriptions do not appear to work in ejabberd 2.0.2
20
+ if node
21
+ pubsub.get_subscriptions_from(node)
22
+ else
23
+ pubsub.get_subscriptions_from_all_nodes
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,7 @@
1
+ require 'jacks/auto_accept'
2
+ require 'jacks/debug'
3
+ require 'jacks/echo'
4
+ require 'jacks/notify'
5
+ require 'jacks/oauth_pubsub'
6
+ require 'jacks/pubsub'
7
+ require 'jacks/roster_debug'
@@ -0,0 +1,16 @@
1
+ class AutoAcceptJack
2
+ def self.connect(switchboard, settings)
3
+ # complain if subscription requests were denied
4
+ switchboard.on_roster_subscription do |item, subscription|
5
+ unless subscription.type == :subscribed
6
+ puts "My subscription request was denied!"
7
+ end
8
+ end
9
+
10
+ # auto-accept subscription requests
11
+ switchboard.on_roster_subscription_request do |item, subscription|
12
+ puts "Accepting subscription from #{subscription.from}"
13
+ roster.accept_subscription(subscription.from)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ require 'switchboard/colors'
2
+
3
+ class DebugJack
4
+ def self.connect(switchboard, settings)
5
+ switchboard.on_presence do |presence|
6
+ puts "<< #{presence.to_s}".green
7
+ end
8
+
9
+ switchboard.on_message do |message|
10
+ puts "<< #{message.to_s}".blue
11
+ end
12
+
13
+ switchboard.on_iq do |iq|
14
+ puts "<< #{iq.to_s}".yellow
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ class EchoJack
2
+ def self.connect(switchboard, settings)
3
+ switchboard.on_message do |message|
4
+ stream.send(message.answer)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ class NotifyJack
2
+ def self.connect(switchboard, settings)
3
+ switchboard.on_roster_loaded do
4
+ roster.items.each do |jid, item|
5
+ presence(nil, jid)
6
+ end
7
+ end
8
+
9
+ switchboard.on_shutdown do
10
+ roster.items.each do |jid, item|
11
+ presence(:unavailable, jid)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ class OAuthPubSubJack
2
+ def self.connect(switchboard, settings)
3
+ require 'switchboard/helpers/oauth_pubsub'
4
+
5
+ # TODO generalize this pattern for required settings
6
+ unless settings["pubsub.server"]
7
+ puts "A pubsub server must be specified."
8
+ return false
9
+ end
10
+
11
+ switchboard.extend(Switchboard::Helpers::OAuthPubSubHelper)
12
+
13
+ switchboard.on_startup do
14
+ @oauth_consumer = OAuth::Consumer.new(settings["oauth.consumer_key"], settings["oauth.consumer_secret"])
15
+ @oauth_token = OAuth::Token.new(settings["oauth.token"], settings["oauth.token_secret"])
16
+
17
+ @pubsub = Jabber::PubSub::OAuthServiceHelper.new(client, settings["pubsub.server"], @oauth_consumer, @oauth_token)
18
+ @pubsub.add_event_callback do |event|
19
+ on(:pubsub_event, event)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ require 'switchboard/helpers/pubsub'
2
+
3
+ class PubSubJack
4
+ def self.connect(switchboard, settings)
5
+ # TODO generalize this pattern for required settings
6
+ unless settings["pubsub.server"]
7
+ puts "A pubsub server must be specified."
8
+ return false
9
+ end
10
+
11
+ switchboard.extend(Switchboard::Helpers::PubSubHelper)
12
+
13
+ switchboard.on_startup do
14
+ @pubsub = Jabber::PubSub::ServiceHelper.new(client, settings["pubsub.server"])
15
+
16
+ @pubsub.add_event_callback do |event|
17
+ on(:pubsub_event, event)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ class RosterDebugJack
2
+ def self.connect(switchboard, settings)
3
+ switchboard.on_roster_presence do |item, old_presence, new_presence|
4
+ puts "[presence] << #{item.inspect}: #{old_presence.to_s}, #{new_presence.to_s}"
5
+ end
6
+
7
+ switchboard.on_roster_query do |query|
8
+ puts "[roster query] << #{query.to_s}"
9
+ end
10
+
11
+ switchboard.on_roster_subscription do |item, subscription|
12
+ puts "[subscription] << #{item.inspect}: #{subscription.to_s}"
13
+ end
14
+
15
+ switchboard.on_roster_subscription_request do |item, subscription|
16
+ puts "[subscription request] << #{item.inspect}: #{subscription.to_s}"
17
+ end
18
+
19
+ switchboard.on_roster_update do |old_item, new_item|
20
+ puts "[update] #{old_item.inspect}, #{new_item.inspect}"
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,49 @@
1
+ require 'yaml'
2
+
3
+ module Switchboard
4
+ class Settings
5
+ DEFAULT_PATH = File.join(ENV["HOME"], ".switchboardrc")
6
+
7
+ def initialize(path = DEFAULT_PATH)
8
+ @path = path
9
+
10
+ if File.exists?(path)
11
+ set_perms
12
+ @config = YAML.load(File.read(path))
13
+ end
14
+
15
+ @config ||= {}
16
+ end
17
+
18
+ def get(key)
19
+ Switchboard::OPTIONS[key] || @config[key] || Switchboard::DEFAULT_OPTIONS[key]
20
+ end
21
+
22
+ alias_method :[], :get
23
+
24
+ def set!(key, value)
25
+ set(key, value)
26
+ write
27
+ set_perms
28
+ end
29
+
30
+ def set(key, value)
31
+ @config[key] = value
32
+ end
33
+
34
+ def []=(key, value)
35
+ set(key, value)
36
+ end
37
+
38
+ def write
39
+ open(@path, "w") do |f|
40
+ f << @config.to_yaml
41
+ end
42
+ end
43
+
44
+ def set_perms
45
+ File.chmod 0600, @path
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,12 @@
1
+ begin
2
+ require 'oauth'
3
+ rescue LoadError
4
+ end
5
+
6
+ require 'switchboard/core'
7
+ require 'switchboard/client'
8
+ require 'switchboard/component'
9
+ require 'switchboard/jacks'
10
+ require 'switchboard/settings'
11
+ require 'switchboard/version'
12
+
@@ -0,0 +1,3 @@
1
+ module Switchboard
2
+ VERSION = [0, 1, 0]
3
+ end
@@ -0,0 +1,15 @@
1
+ # this file is automatically generated
2
+ Gem::Specification.new do |s|
3
+ s.name = "switchboard"
4
+ s.version = "0.1.0"
5
+ s.summary = "XMPP toolkit."
6
+ s.description = "A toolkit for assembling XMPP clients and interacting with XMPP servers."
7
+ s.authors = ["Seth Fitzsimmons"]
8
+ s.email = ["seth@mojodna.net"]
9
+
10
+ s.files = ["bin/switchboard", "examples/echo_bot.rb", "History.txt", "lib/switchboard/client.rb", "lib/switchboard/colors.rb", "lib/switchboard/commands/command.rb", "lib/switchboard/commands/config/config.rb", "lib/switchboard/commands/config.rb", "lib/switchboard/commands/default.rb", "lib/switchboard/commands/disco/disco.rb", "lib/switchboard/commands/disco/info.rb", "lib/switchboard/commands/disco/items.rb", "lib/switchboard/commands/disco.rb", "lib/switchboard/commands/grep.rb", "lib/switchboard/commands/help/help.rb", "lib/switchboard/commands/help.rb", "lib/switchboard/commands/last/last.rb", "lib/switchboard/commands/last.rb", "lib/switchboard/commands/pep/location.rb", "lib/switchboard/commands/pep/pep.rb", "lib/switchboard/commands/pep/tune.rb", "lib/switchboard/commands/pep.rb", "lib/switchboard/commands/pubsub/affiliations.rb", "lib/switchboard/commands/pubsub/config.rb", "lib/switchboard/commands/pubsub/create.rb", "lib/switchboard/commands/pubsub/delete.rb", "lib/switchboard/commands/pubsub/info.rb", "lib/switchboard/commands/pubsub/items.rb", "lib/switchboard/commands/pubsub/listen.rb", "lib/switchboard/commands/pubsub/nodes.rb", "lib/switchboard/commands/pubsub/options.rb", "lib/switchboard/commands/pubsub/publish.rb", "lib/switchboard/commands/pubsub/pubsub.rb", "lib/switchboard/commands/pubsub/purge.rb", "lib/switchboard/commands/pubsub/retract.rb", "lib/switchboard/commands/pubsub/subscribe.rb", "lib/switchboard/commands/pubsub/subscriptions.rb", "lib/switchboard/commands/pubsub/unsubscribe.rb", "lib/switchboard/commands/pubsub.rb", "lib/switchboard/commands/register.rb", "lib/switchboard/commands/roster/add.rb", "lib/switchboard/commands/roster/list.rb", "lib/switchboard/commands/roster/online.rb", "lib/switchboard/commands/roster/remove.rb", "lib/switchboard/commands/roster/roster.rb", "lib/switchboard/commands/roster.rb", "lib/switchboard/commands/unregister.rb", "lib/switchboard/commands.rb", "lib/switchboard/component.rb", "lib/switchboard/core.rb", "lib/switchboard/ext/delegate.rb", "lib/switchboard/ext/instance_exec.rb", "lib/switchboard/helpers/oauth_pubsub.rb", "lib/switchboard/helpers/pubsub.rb", "lib/switchboard/jacks/auto_accept.rb", "lib/switchboard/jacks/debug.rb", "lib/switchboard/jacks/echo.rb", "lib/switchboard/jacks/notify.rb", "lib/switchboard/jacks/oauth_pubsub.rb", "lib/switchboard/jacks/pubsub.rb", "lib/switchboard/jacks/roster_debug.rb", "lib/switchboard/jacks.rb", "lib/switchboard/settings.rb", "lib/switchboard/switchboard.rb", "lib/switchboard/version.rb", "lib/switchboard.rb", "Rakefile", "README.markdown", "switchboard.gemspec"]
11
+ s.executables = ["switchboard"]
12
+ s.require_paths = ["lib"]
13
+
14
+ s.add_dependency("xmpp4r", ">=", "0.5")
15
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: switchboard
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Seth Fitzsimmons
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-08 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: xmpp4r
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ - - "="
25
+ - !ruby/object:Gem::Version
26
+ version: "0.5"
27
+ version:
28
+ description: A toolkit for assembling XMPP clients and interacting with XMPP servers.
29
+ email:
30
+ - seth@mojodna.net
31
+ executables:
32
+ - switchboard
33
+ extensions: []
34
+
35
+ extra_rdoc_files: []
36
+
37
+ files:
38
+ - bin/switchboard
39
+ - examples/echo_bot.rb
40
+ - History.txt
41
+ - lib/switchboard/client.rb
42
+ - lib/switchboard/colors.rb
43
+ - lib/switchboard/commands/command.rb
44
+ - lib/switchboard/commands/config/config.rb
45
+ - lib/switchboard/commands/config.rb
46
+ - lib/switchboard/commands/default.rb
47
+ - lib/switchboard/commands/disco/disco.rb
48
+ - lib/switchboard/commands/disco/info.rb
49
+ - lib/switchboard/commands/disco/items.rb
50
+ - lib/switchboard/commands/disco.rb
51
+ - lib/switchboard/commands/grep.rb
52
+ - lib/switchboard/commands/help/help.rb
53
+ - lib/switchboard/commands/help.rb
54
+ - lib/switchboard/commands/last/last.rb
55
+ - lib/switchboard/commands/last.rb
56
+ - lib/switchboard/commands/pep/location.rb
57
+ - lib/switchboard/commands/pep/pep.rb
58
+ - lib/switchboard/commands/pep/tune.rb
59
+ - lib/switchboard/commands/pep.rb
60
+ - lib/switchboard/commands/pubsub/affiliations.rb
61
+ - lib/switchboard/commands/pubsub/config.rb
62
+ - lib/switchboard/commands/pubsub/create.rb
63
+ - lib/switchboard/commands/pubsub/delete.rb
64
+ - lib/switchboard/commands/pubsub/info.rb
65
+ - lib/switchboard/commands/pubsub/items.rb
66
+ - lib/switchboard/commands/pubsub/listen.rb
67
+ - lib/switchboard/commands/pubsub/nodes.rb
68
+ - lib/switchboard/commands/pubsub/options.rb
69
+ - lib/switchboard/commands/pubsub/publish.rb
70
+ - lib/switchboard/commands/pubsub/pubsub.rb
71
+ - lib/switchboard/commands/pubsub/purge.rb
72
+ - lib/switchboard/commands/pubsub/retract.rb
73
+ - lib/switchboard/commands/pubsub/subscribe.rb
74
+ - lib/switchboard/commands/pubsub/subscriptions.rb
75
+ - lib/switchboard/commands/pubsub/unsubscribe.rb
76
+ - lib/switchboard/commands/pubsub.rb
77
+ - lib/switchboard/commands/register.rb
78
+ - lib/switchboard/commands/roster/add.rb
79
+ - lib/switchboard/commands/roster/list.rb
80
+ - lib/switchboard/commands/roster/online.rb
81
+ - lib/switchboard/commands/roster/remove.rb
82
+ - lib/switchboard/commands/roster/roster.rb
83
+ - lib/switchboard/commands/roster.rb
84
+ - lib/switchboard/commands/unregister.rb
85
+ - lib/switchboard/commands.rb
86
+ - lib/switchboard/component.rb
87
+ - lib/switchboard/core.rb
88
+ - lib/switchboard/ext/delegate.rb
89
+ - lib/switchboard/ext/instance_exec.rb
90
+ - lib/switchboard/helpers/oauth_pubsub.rb
91
+ - lib/switchboard/helpers/pubsub.rb
92
+ - lib/switchboard/jacks/auto_accept.rb
93
+ - lib/switchboard/jacks/debug.rb
94
+ - lib/switchboard/jacks/echo.rb
95
+ - lib/switchboard/jacks/notify.rb
96
+ - lib/switchboard/jacks/oauth_pubsub.rb
97
+ - lib/switchboard/jacks/pubsub.rb
98
+ - lib/switchboard/jacks/roster_debug.rb
99
+ - lib/switchboard/jacks.rb
100
+ - lib/switchboard/settings.rb
101
+ - lib/switchboard/switchboard.rb
102
+ - lib/switchboard/version.rb
103
+ - lib/switchboard.rb
104
+ - Rakefile
105
+ - README.markdown
106
+ - switchboard.gemspec
107
+ has_rdoc: true
108
+ homepage:
109
+ licenses: []
110
+
111
+ post_install_message:
112
+ rdoc_options: []
113
+
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: "0"
121
+ version:
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: "0"
127
+ version:
128
+ requirements: []
129
+
130
+ rubyforge_project:
131
+ rubygems_version: 1.3.3
132
+ signing_key:
133
+ specification_version: 3
134
+ summary: XMPP toolkit.
135
+ test_files: []
136
+