c3s 0.3.3 → 0.3.4

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/Manifest CHANGED
@@ -1,7 +1,5 @@
1
- Manifest
2
1
  README.rdoc
3
2
  Rakefile
4
- c3s
5
3
  lib/c3s.rb
6
4
  lib/c3s_logger.rb
7
5
  lib/component.rb
@@ -14,3 +12,4 @@ lib/pubsub/nodetracker.rb
14
12
  lib/pubsub/publisher.rb
15
13
  lib/pubsub/subscriber.rb
16
14
  lib/republisher.rb
15
+ Manifest
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('c3s', '0.3.3') do |p|
5
+ Echoe.new('c3s', '0.3.4') do |p|
6
6
  p.description = "C3s library gem."
7
7
  p.url = "http://github.com/rikas/c3s"
8
8
  p.author = "Ricardo Otero"
data/c3s.gemspec CHANGED
@@ -2,20 +2,20 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{c3s}
5
- s.version = "0.3.3"
5
+ s.version = "0.3.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Ricardo Otero"]
9
- s.date = %q{2010-03-03}
9
+ s.date = %q{2010-04-08}
10
10
  s.description = %q{C3s library gem.}
11
11
  s.email = %q{oterosantos@gmail.com}
12
12
  s.extra_rdoc_files = ["README.rdoc", "lib/c3s.rb", "lib/c3s_logger.rb", "lib/component.rb", "lib/component_connection.rb", "lib/configreader.rb", "lib/databaseadapter.rb", "lib/model.rb", "lib/pubsub/node.rb", "lib/pubsub/nodetracker.rb", "lib/pubsub/publisher.rb", "lib/pubsub/subscriber.rb", "lib/republisher.rb"]
13
- s.files = ["Manifest", "README.rdoc", "Rakefile", "c3s", "lib/c3s.rb", "lib/c3s_logger.rb", "lib/component.rb", "lib/component_connection.rb", "lib/configreader.rb", "lib/databaseadapter.rb", "lib/model.rb", "lib/pubsub/node.rb", "lib/pubsub/nodetracker.rb", "lib/pubsub/publisher.rb", "lib/pubsub/subscriber.rb", "lib/republisher.rb", "c3s.gemspec"]
13
+ s.files = ["README.rdoc", "Rakefile", "c3s.gemspec", "lib/c3s.rb", "lib/c3s_logger.rb", "lib/component.rb", "lib/component_connection.rb", "lib/configreader.rb", "lib/databaseadapter.rb", "lib/model.rb", "lib/pubsub/node.rb", "lib/pubsub/nodetracker.rb", "lib/pubsub/publisher.rb", "lib/pubsub/subscriber.rb", "lib/republisher.rb", "Manifest"]
14
14
  s.homepage = %q{http://github.com/rikas/c3s}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "C3s", "--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = %q{c3s}
18
- s.rubygems_version = %q{1.3.6}
18
+ s.rubygems_version = %q{1.3.4}
19
19
  s.summary = %q{C3s library gem.}
20
20
 
21
21
  if s.respond_to? :specification_version then
data/lib/component.rb CHANGED
@@ -33,7 +33,7 @@ module C3s
33
33
  # Throws ClientAuthenticationFailure
34
34
  def connect
35
35
  super(config['url'], config['port'])
36
-
36
+
37
37
  if is_connected?
38
38
  auth(config['password'])
39
39
  else
@@ -51,17 +51,17 @@ module C3s
51
51
  Thread.abort_on_exception = true
52
52
 
53
53
  add_iq_callback do |iq|
54
- t = Thread.new do
54
+ t1 = Thread.new do
55
55
  handle_iq(iq)
56
56
  end
57
- t.join
57
+ t1.join
58
58
  end
59
59
 
60
60
  add_message_callback do |msg|
61
- t = Thread.new do
61
+ t2 = Thread.new do
62
62
  handle_msg(msg)
63
63
  end
64
- t.join
64
+ t2.join
65
65
  end
66
66
  end
67
67
 
@@ -113,10 +113,19 @@ module C3s
113
113
  # iq:: [Jabber::IQ] the received IQ packet
114
114
  def handle_set(iq)
115
115
  stanza = iq.query.first_element(config['name']) # TODO assuming that pubsubnode = xml root
116
-
116
+ data = {}
117
+
118
+ # It's admin setting the information for someone
119
+ adminJID = "admin@#{config['url']}"
120
+ if iq.from.bare.to_s.eql?(adminJID)
121
+ if stanza.attributes['jid']
122
+ data = {:jid => stanza.attributes['jid']}
123
+ end
124
+ end
125
+
117
126
  # Build data for activerecord object. The jid is taken from
118
127
  # the 'jid' attribute on the main tag under the <query>
119
- data = {:jid => iq.from.to_s}
128
+ data = {:jid => iq.from.to_s} if data.empty?
120
129
  self.model.new.nodes.each do |node|
121
130
  data.merge!(node => stanza.first_element_text(node))
122
131
  end
@@ -130,8 +139,8 @@ module C3s
130
139
  object.save!
131
140
 
132
141
  if object.errors.count == 0
133
- $LOG.info "Publishing data to node #{config['name']}:#{iq.from.to_s}"
134
- c3snode = C3s::Node.new("#{config['name']}:#{iq.from.to_s}")
142
+ $LOG.info "Publishing data to node #{config['name']}:#{data[:jid]} (data changed: #{changed})"
143
+ c3snode = C3s::Node.new("#{config['name']}:#{data[:jid]}")
135
144
  publish(c3snode, stanza, changed)
136
145
  send_ok(iq)
137
146
  end
@@ -183,6 +192,7 @@ module C3s
183
192
  # changed:: [Boolean] the data is different from last set operation?
184
193
  def publish(c3snode, data, changed)
185
194
  if changed
195
+ $LOG.info "Information for node '#{c3snode.to_s}' changed. Publishing data..."
186
196
  pub = Publisher.new(self, config['pubsub'])
187
197
  pub.create_tree(c3snode)
188
198
  pub.publish(c3snode, data)
@@ -57,9 +57,9 @@ module C3s
57
57
 
58
58
  # TODO - use this to do something useful?
59
59
  @component.on_exception do |e, component, where|
60
- $LOG.error "************** FATAL ERROR"
61
- $LOG.error e.backtrace.join("\n")
62
- #exit
60
+ component.disconnect
61
+ $LOG.error e.backtrace.join("\n") if e
62
+ exit 1
63
63
  end
64
64
 
65
65
  puts "Starting messaging loop..."
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 3
9
- version: 0.3.3
8
+ - 4
9
+ version: 0.3.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ricardo Otero
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-03 00:00:00 +00:00
17
+ date: 2010-04-08 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -39,10 +39,9 @@ extra_rdoc_files:
39
39
  - lib/pubsub/subscriber.rb
40
40
  - lib/republisher.rb
41
41
  files:
42
- - Manifest
43
42
  - README.rdoc
44
43
  - Rakefile
45
- - c3s
44
+ - c3s.gemspec
46
45
  - lib/c3s.rb
47
46
  - lib/c3s_logger.rb
48
47
  - lib/component.rb
@@ -55,7 +54,7 @@ files:
55
54
  - lib/pubsub/publisher.rb
56
55
  - lib/pubsub/subscriber.rb
57
56
  - lib/republisher.rb
58
- - c3s.gemspec
57
+ - Manifest
59
58
  has_rdoc: true
60
59
  homepage: http://github.com/rikas/c3s
61
60
  licenses: []
data/c3s DELETED
@@ -1,59 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # This is the command used to run the component
4
-
5
- require 'rubygems'
6
-
7
- # Check for gem versions
8
- gem 'c3s', '>=0.3.2'
9
- gem 'xmpp4r', '>=0.5'
10
-
11
- require 'c3s'
12
- require 'pathname'
13
-
14
- PROVIDERS_DIR = File.join(ENV['HOME'], "ptcb", "code", "providers")
15
-
16
- def usage
17
- puts "Usage: provider [provider_dir]"
18
- puts ""
19
- puts "Available providers: #{available_providers}"
20
- puts ""
21
- exit
22
- end
23
-
24
- def available_providers
25
- available_providers = []
26
- Dir.glob(File.join(PROVIDERS_DIR, "*")) do |dir|
27
- next unless File.directory?(dir)
28
- conf = File.join(dir, "component.yml")
29
- path = Pathname.new(dir)
30
- available_providers << path.basename if File.exist?(conf)
31
- end
32
- available_providers.join(", ")
33
- end
34
-
35
- args = ARGV
36
- if (args.size!=1)
37
- usage
38
- else
39
- provider = File.join(PROVIDERS_DIR, args.last)
40
- if (!File.directory?(provider))
41
- puts "Couldn't find '#{args.last}' provider"
42
- exit
43
- end
44
- end
45
-
46
- # Set process name to provider
47
- $0 = args.last
48
-
49
- # Set the dir variables
50
- C3S_COMPONENT_DIR = File.join(PROVIDERS_DIR, args.last)
51
- C3S_LIB_DIR = File.join(C3S_COMPONENT_DIR, 'lib')
52
- C3S_LOG_DIR = File.join(C3S_COMPONENT_DIR, 'logs')
53
-
54
- # Power to the requires
55
- $:.unshift C3S_COMPONENT_DIR
56
- $:.unshift C3S_LIB_DIR
57
- $:.unshift File.join(C3S_LIB_DIR, args.last)
58
-
59
- require 'lib/runner'