mojodna-switchboard 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.executables = ["switchboard"]
17
17
  s.require_paths = ["lib"]
18
18
 
19
- s.add_dependency("mojodna-xmpp4r", ">=", "0.4.0.2")
19
+ s.add_dependency("mojodna-xmpp4r", ">=", "0.4.0.3")
20
20
  end
21
21
  EOF
22
22
 
data/bin/switchboard CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'rubygems'
2
3
  require 'switchboard'
3
4
  require 'switchboard/commands'
4
5
  require 'optparse'
@@ -7,8 +7,8 @@ rescue LoadError => e
7
7
  end
8
8
 
9
9
  require 'oauth/version'
10
- if OAuth::VERSION < "0.3.1.1"
11
- puts "The OAuth library must be at least version 0.3.1.1."
10
+ if OAuth::VERSION < "0.3.1.4"
11
+ puts "The OAuth library must be at least version 0.3.1.4."
12
12
  exit 1
13
13
  end
14
14
 
@@ -1,6 +1,6 @@
1
1
  begin
2
2
  require 'oauth'
3
- rescue LoadError => e
3
+ rescue LoadError
4
4
  end
5
5
 
6
6
  require 'switchboard/core'
@@ -1,3 +1,3 @@
1
1
  module Switchboard
2
- VERSION = [0, 0, 11]
2
+ VERSION = [0, 0, 12]
3
3
  end
data/switchboard.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
  # this file is automatically generated
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "switchboard"
4
- s.version = "0.0.11"
4
+ s.version = "0.0.12"
5
5
  s.summary = "XMPP toolkit."
6
6
  s.description = "A toolkit for assembling XMPP clients and interacting with XMPP servers."
7
7
  s.authors = ["Seth Fitzsimmons"]
8
8
  s.email = ["seth@mojodna.net"]
9
9
 
10
- s.files = ["bin/switchboard", "examples/election_results.rb", "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/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/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/xmpp4r/location/helper/helper.rb", "lib/switchboard/xmpp4r/location/location.rb", "lib/switchboard/xmpp4r/location.rb", "lib/switchboard/xmpp4r/pubsub/helper/oauth_service_helper.rb", "lib/switchboard.rb", "Rakefile", "README.markdown", "switchboard.gemspec"]
10
+ s.files = ["bin/switchboard", "examples/election_results.rb", "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/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/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-0.0.11.gem", "switchboard.gemspec", "switchboard.gemspec.me"]
11
11
  s.executables = ["switchboard"]
12
12
  s.require_paths = ["lib"]
13
13
 
14
- s.add_dependency("mojodna-xmpp4r", ">=", "0.4.0.2")
14
+ s.add_dependency("mojodna-xmpp4r", ">=", "0.4.0.3")
15
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mojodna-switchboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seth Fitzsimmons
@@ -22,7 +22,7 @@ dependencies:
22
22
  version: "0"
23
23
  - - "="
24
24
  - !ruby/object:Gem::Version
25
- version: 0.4.0.2
25
+ version: 0.4.0.3
26
26
  version:
27
27
  description: A toolkit for assembling XMPP clients and interacting with XMPP servers.
28
28
  email:
@@ -96,14 +96,12 @@ files:
96
96
  - lib/switchboard/settings.rb
97
97
  - lib/switchboard/switchboard.rb
98
98
  - lib/switchboard/version.rb
99
- - lib/switchboard/xmpp4r/location/helper/helper.rb
100
- - lib/switchboard/xmpp4r/location/location.rb
101
- - lib/switchboard/xmpp4r/location.rb
102
- - lib/switchboard/xmpp4r/pubsub/helper/oauth_service_helper.rb
103
99
  - lib/switchboard.rb
104
100
  - Rakefile
105
101
  - README.markdown
102
+ - switchboard-0.0.11.gem
106
103
  - switchboard.gemspec
104
+ - switchboard.gemspec.me
107
105
  has_rdoc: false
108
106
  homepage:
109
107
  post_install_message:
@@ -1,2 +0,0 @@
1
- require 'xmpp4r/location/location'
2
- require 'xmpp4r/location/helper/helper'
@@ -1,56 +0,0 @@
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/location/location'
8
-
9
- module Jabber
10
- module UserLocation
11
- ##
12
- # A Helper for XEP-0080 User Location
13
- #
14
- # Use this helper to send a user's location, or receive them from a
15
- # specified jid. Described at http://www.xmpp.org/extensions/xep-0080.html
16
- #
17
- # For example:
18
- # <pre>
19
- # h = UserLocation::Helper( @client, 'radio1@hug.hellomatty.com' )
20
- # h.add_userlocation_callback do |location|
21
- # puts "Now in: #{location.locality}"
22
- # end
23
- # </pre>
24
- class Helper < PubSub::ServiceHelper
25
- ##
26
- # Send out the current location.
27
- #
28
- # location:: [Jabber::UserLocation::Location] current_location
29
- def current_location(location)
30
- item = Jabber::PubSub::Item.new()
31
- item.add(location)
32
-
33
- publish_item_to(NS_USERLOCATION, item)
34
- end
35
-
36
- ##
37
- # Use this method to indicate that you wish to stop publishing
38
- # a location.
39
- def stop_publishing
40
- current_location(Jabber::UserLocation::Location.new())
41
- end
42
-
43
- ##
44
- # Add a callback that will be invoked when a location is received
45
- # from the jid specified when you constructed the Helper.
46
- def add_userlocation_callback(prio = 200, ref = nil, &block)
47
- add_event_callback(prio, ref) do |event|
48
- location = event.first_element('items/item/location')
49
- if location
50
- block.call(location)
51
- end
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,179 +0,0 @@
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 'time'
6
- require 'xmpp4r/xmppelement'
7
- require 'rexml/element'
8
-
9
- module Jabber
10
- module UserLocation
11
- NS_USERLOCATION = 'http://jabber.org/protocol/geoloc'
12
- ALLOWABLE_ATTRIBUTES = %w(accuracy alt area bearing building country
13
- datum description floor lat locality lon postalcode region room
14
- speed street text timestamp uri)
15
-
16
- ##
17
- # The <geoloc> XMPP element, as defined in XEP-0080 User Location
18
- #
19
- # See http://xmpp.org/extensions/xep-0080.html - this element
20
- # encapsulates data about a user's current location. These are
21
- # expressed as child elements such as <locality>, <lat>, etc.
22
- # which are also managed by this class.
23
- #
24
- # If the element has no children then it indicates that the user
25
- # has stopped publishing their location.
26
- class Location < XMPPElement
27
- name_xmlns 'geoloc', NS_USERLOCATION
28
- force_xmlns true
29
-
30
- ##
31
- # Construct a new <location> element.
32
- #
33
- # Supply no arguments to make an empty element to indicate that
34
- # location is no longer being published.
35
- #
36
- # attributes:: [Hash] location attributes
37
- def initialize(attributes = {})
38
- super()
39
-
40
- # validate attributes
41
- attributes = attributes.select do |k,v|
42
- ALLOWABLE_ATTRIBUTES.include?(k) && !v.nil?
43
- end
44
-
45
- attributes.each do |k,v|
46
- v = x.xmlschema if v.is_a?(Time)
47
- add_element(REXML::Element.new(k)).text = v.to_s
48
- end
49
- end
50
-
51
-
52
- ##
53
- # Returns true if a location is currently being published, otherwise false.
54
- def published?
55
- (elements.size > 0)
56
- end
57
-
58
- ##
59
- # Get the accuracy attribute of this location.
60
- def accuracy
61
- first_element('accuracy').text if first_element('accuracy')
62
- end
63
-
64
- ##
65
- # Get the alt attribute of this location.
66
- def alt
67
- first_element('alt').text if first_element('alt')
68
- end
69
-
70
- ##
71
- # Get the area attribute of this location.
72
- def area
73
- first_element('area').text if first_element('area')
74
- end
75
-
76
- ##
77
- # Get the bearing attribute of this location.
78
- def bearing
79
- first_element('bearing').text if first_element('bearing')
80
- end
81
-
82
- ##
83
- # Get the building attribute of this location.
84
- def building
85
- first_element('building').text if first_element('building')
86
- end
87
-
88
- ##
89
- # Get the country attribute of this location.
90
- def country
91
- first_element('country').text if first_element('country')
92
- end
93
-
94
- ##
95
- # Get the datum attribute of this location.
96
- def datum
97
- first_element('datum').text if first_element('datum')
98
- end
99
-
100
- ##
101
- # Get the description attribute of this location.
102
- def description
103
- first_element('description').text if first_element('description')
104
- end
105
-
106
- ##
107
- # Get the floor attribute of this location.
108
- def floor
109
- first_element('floor').text if first_element('floor')
110
- end
111
-
112
- ##
113
- # Get the lat attribute of this location.
114
- def lat
115
- first_element('lat').text if first_element('lat')
116
- end
117
-
118
- ##
119
- # Get the locality attribute of this location.
120
- def locality
121
- first_element('locality').text if first_element('locality')
122
- end
123
-
124
- ##
125
- # Get the lon attribute of this location.
126
- def lon
127
- first_element('lon').text if first_element('lon')
128
- end
129
-
130
- ##
131
- # Get the postalcode attribute of this location.
132
- def postalcode
133
- first_element('postalcode').text if first_element('postalcode')
134
- end
135
-
136
- ##
137
- # Get the region attribute of this location.
138
- def region
139
- first_element('region').text if first_element('region')
140
- end
141
-
142
- ##
143
- # Get the room attribute of this location.
144
- def room
145
- first_element('room').text if first_element('room')
146
- end
147
-
148
- ##
149
- # Get the speed attribute of this location.
150
- def speed
151
- first_element('speed').text if first_element('speed')
152
- end
153
-
154
- ##
155
- # Get the street attribute of this location.
156
- def street
157
- first_element('street').text if first_element('street')
158
- end
159
-
160
- ##
161
- # Get the text attribute of this location.
162
- def text
163
- first_element('text').text if first_element('text')
164
- end
165
-
166
- ##
167
- # Get the timestamp attribute of this location.
168
- def timestamp
169
- first_element('timestamp').text if first_element('timestamp')
170
- end
171
-
172
- ##
173
- # Get the uri attribute of this location.
174
- def uri
175
- first_element('uri').text if first_element('uri')
176
- end
177
- end
178
- end
179
- end
@@ -1,107 +0,0 @@
1
- module Jabber
2
- module PubSub
3
- # PubSub service helper for use with OAuth-authenticated nodes
4
- class OAuthServiceHelper < ServiceHelper
5
- def initialize(stream, pubsubjid)
6
- super(stream, pubsubjid)
7
- end
8
-
9
- # override #get_subscriptions_from_all_nodes to add an oauth element
10
- def get_subscriptions_from_all_nodes(oauth_consumer, oauth_token)
11
- iq = basic_pubsub_query(:get)
12
-
13
- iq.pubsub.add(create_oauth_node(oauth_consumer, oauth_token))
14
-
15
- entities = iq.pubsub.add(REXML::Element.new('subscriptions'))
16
- res = nil
17
- @stream.send_with_id(iq) { |reply|
18
- if reply.pubsub.first_element('subscriptions')
19
- res = []
20
- reply.pubsub.first_element('subscriptions').each_element('subscription') { |subscription|
21
- res << Jabber::PubSub::Subscription.import(subscription)
22
- }
23
- end
24
- }
25
-
26
- res
27
- end
28
-
29
- # override #subscribe_to to add an oauth element
30
- def subscribe_to(node, oauth_consumer, oauth_token)
31
- iq = basic_pubsub_query(:set)
32
- sub = REXML::Element.new('subscribe')
33
- sub.attributes['node'] = node
34
- sub.attributes['jid'] = @stream.jid.strip.to_s
35
-
36
- sub.add(create_oauth_node(oauth_consumer, oauth_token))
37
-
38
- iq.pubsub.add(sub)
39
- res = nil
40
- @stream.send_with_id(iq) do |reply|
41
- pubsubanswer = reply.pubsub
42
- if pubsubanswer.first_element('subscription')
43
- res = PubSub::Subscription.import(pubsubanswer.first_element('subscription'))
44
- end
45
- end # @stream.send_with_id(iq)
46
- res
47
- end
48
-
49
- # override #unsubscribe_from to add an oauth element
50
- def unsubscribe_from(node, oauth_consumer, oauth_token, subid=nil)
51
- iq = basic_pubsub_query(:set)
52
- unsub = PubSub::Unsubscribe.new
53
- unsub.node = node
54
- unsub.jid = @stream.jid.strip
55
-
56
- unsub.add(create_oauth_node(oauth_consumer, oauth_token))
57
-
58
- iq.pubsub.add(unsub)
59
- ret = false
60
- @stream.send_with_id(iq) { |reply|
61
- ret = reply.kind_of?(Jabber::Iq) and reply.type == :result
62
- } # @stream.send_with_id(iq)
63
- ret
64
- end
65
-
66
- protected
67
-
68
- # add the OAuth sauce (XEP-235)
69
- def create_oauth_node(oauth_consumer, oauth_token)
70
- require 'oauth/signature/hmac/sha1'
71
- require 'cgi'
72
-
73
- request = OAuth::RequestProxy.proxy \
74
- "method" => "iq",
75
- "uri" => [@stream.jid.strip.to_s, @pubsubjid.strip.to_s] * "&",
76
- "parameters" => {
77
- "oauth_consumer_key" => oauth_consumer.key,
78
- "oauth_token" => oauth_token.token,
79
- "oauth_signature_method" => "HMAC-SHA1"
80
- }
81
-
82
- signature = OAuth::Signature.sign(request, :consumer => oauth_consumer, :token => oauth_token)
83
-
84
- oauth = REXML::Element.new("oauth")
85
- oauth.attributes['xmlns'] = 'urn:xmpp:oauth'
86
-
87
- oauth_consumer_key = REXML::Element.new("oauth_consumer_key")
88
- oauth_consumer_key.text = oauth_consumer.key
89
- oauth.add(oauth_consumer_key)
90
-
91
- oauth_token_node = REXML::Element.new("oauth_token")
92
- oauth_token_node.text = oauth_token.token
93
- oauth.add(oauth_token_node)
94
-
95
- oauth_signature_method = REXML::Element.new("oauth_signature_method")
96
- oauth_signature_method.text = "HMAC-SHA1"
97
- oauth.add(oauth_signature_method)
98
-
99
- oauth_signature = REXML::Element.new("oauth_signature")
100
- oauth_signature.text = signature
101
- oauth.add(oauth_signature)
102
-
103
- oauth
104
- end
105
- end
106
- end
107
- end