omf_common 6.0.0.pre.4 → 6.0.0.pre.6

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/lib/omf_common.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'logging'
2
+ require 'active_support/inflector'
2
3
 
3
4
  require "omf_common/version"
4
5
  require "omf_common/message"
@@ -1,10 +1,10 @@
1
- require 'omf_common/dsl/xmpp_blather'
1
+ require 'omf_common/dsl/xmpp'
2
2
 
3
3
  module OmfCommon
4
4
  # PubSub communication class, can be extended with different implementations
5
5
  class Comm
6
6
  def initialize(pubsub_implementation)
7
- self.extend("OmfCommon::DSL::#{pubsub_implementation.to_s.camelcase}".constant)
7
+ self.extend("OmfCommon::DSL::#{pubsub_implementation.to_s.camelize}".constantize)
8
8
  end
9
9
  end
10
10
  end
@@ -2,12 +2,4 @@ class String
2
2
  def ducktype
3
3
  Integer(self) rescue Float(self) rescue self
4
4
  end
5
-
6
- def camelcase
7
- self.split('_').map(&:capitalize).join('')
8
- end
9
-
10
- def constant
11
- self.split('::').inject(Object) { |obj, name| obj = obj.const_get(name); obj }
12
- end
13
5
  end
@@ -1,13 +1,12 @@
1
1
  require 'blather/client/dsl'
2
- require 'omf_common/core_ext/blather/dsl/pubsub'
3
- require 'omf_common/core_ext/blather/stream/features'
4
- require 'omf_common/core_ext/blather/stream/features/register'
5
2
 
6
3
  module OmfCommon
7
4
  module DSL
8
- module XmppBlather
5
+ module Xmpp
9
6
  include Blather::DSL
10
7
 
8
+ HOST_PREFIX = 'pubsub'
9
+
11
10
  PUBSUB_CONFIGURE = Blather::Stanza::X.new({
12
11
  :type => :submit,
13
12
  :fields => [
@@ -27,59 +26,61 @@ module OmfCommon
27
26
  end
28
27
 
29
28
  # Shut down XMPP connection
30
- #
31
- # @param [String] host Host represents the pubsub address, e.g. pubsub.norbit.npc.nicta.com.au
32
- def disconnect(host)
29
+ def disconnect
33
30
  shutdown
34
31
  end
35
32
 
36
- # Create a new pubsub node with additional configuration
33
+ # Create a new pubsub topic with additional configuration
37
34
  #
38
- # @param [String] node Pubsub node name
35
+ # @param [String] topic Pubsub topic name
39
36
  # @param [String] host Pubsub host address
40
- def create_node(node, host, &block)
41
- pubsub.create_with_configuration(node, PUBSUB_CONFIGURE, host, &callback_logging(__method__, node, &block))
37
+ def create_topic(topic, host, &block)
38
+ pubsub.create(topic, prefix_host(host), PUBSUB_CONFIGURE, &callback_logging(__method__, topic, &block))
42
39
  end
43
40
 
44
- # Delete a pubsub node
41
+ # Delete a pubsub topic
45
42
  #
46
- # @param [String] node Pubsub node name
43
+ # @param [String] topic Pubsub topic name
47
44
  # @param [String] host Pubsub host address
48
- def delete_node(node, host, &block)
49
- pubsub.delete(node, host, &callback_logging(__method__, node, &block))
45
+ def delete_topic(topic, host, &block)
46
+ pubsub.delete(topic, prefix_host(host), &callback_logging(__method__, topic, &block))
50
47
  end
51
48
 
52
- # Subscribe to a pubsub node
49
+ # Subscribe to a pubsub topic
53
50
  #
54
- # @param [String] node Pubsub node name
51
+ # @param [String] topic Pubsub topic name
55
52
  # @param [String] host Pubsub host address
56
- def subscribe(node, host, &block)
57
- pubsub.subscribe(node, nil, host, &callback_logging(__method__, node, &block))
53
+ def subscribe(topic, host, &block)
54
+ pubsub.subscribe(topic, nil, prefix_host(host), &callback_logging(__method__, topic, &block))
58
55
  end
59
56
 
60
- # Un-subscribe all existing subscriptions from all pubsub nodes.
57
+ # Un-subscribe all existing subscriptions from all pubsub topics.
61
58
  #
62
59
  # @param [String] host Pubsub host address
63
60
  def unsubscribe(host)
64
- pubsub.subscriptions(host) do |m|
61
+ pubsub.subscriptions(prefix_host(host)) do |m|
65
62
  m[:subscribed] && m[:subscribed].each do |s|
66
- pubsub.unsubscribe(s[:node], nil, s[:subid], host, &callback_logging(__method__, s[:node], s[:subid]))
63
+ pubsub.unsubscribe(s[:node], nil, s[:subid], prefix_host(host), &callback_logging(__method__, s[:node], s[:subid]))
67
64
  end
68
65
  end
69
66
  end
70
67
 
71
- # Publish to a pubsub node
68
+ def affiliations(host, &block)
69
+ pubsub.affiliations(prefix_host(host), &callback_logging(__method__, &block))
70
+ end
71
+
72
+ # Publish to a pubsub topic
72
73
  #
73
- # @param [String] node Pubsub node name
74
+ # @param [String] topic Pubsub topic name
74
75
  # @param [String] message Any XML fragment to be sent as payload
75
76
  # @param [String] host Pubsub host address
76
- def publish(node, message, host, &block)
77
- pubsub.publish(node, message, host, &callback_logging(__method__, node, message.operation, &block))
77
+ def publish(topic, message, host, &block)
78
+ pubsub.publish(topic, message, prefix_host(host), &callback_logging(__method__, topic, message.operation, &block))
78
79
  end
79
80
 
80
- # Event callback for pubsub node event(item published)
81
+ # Event callback for pubsub topic event(item published)
81
82
  #
82
- def node_event(*args, &block)
83
+ def topic_event(*args, &block)
83
84
  pubsub_event(:items?, *args, &callback_logging(__method__, &block))
84
85
  end
85
86
 
@@ -94,6 +95,10 @@ module OmfCommon
94
95
  block.call(callback) if block
95
96
  end
96
97
  end
98
+
99
+ def prefix_host(host)
100
+ "#{HOST_PREFIX}.#{host}"
101
+ end
97
102
  end
98
103
  end
99
104
  end
@@ -38,7 +38,7 @@ module OmfCommon
38
38
  end
39
39
  end
40
40
 
41
- # Construct a property node
41
+ # Construct a property xml node
42
42
  #
43
43
  def property(key, value = nil, &block)
44
44
  key_node = Message.new('property')
@@ -1,4 +1,4 @@
1
1
  module OmfCommon
2
- VERSION = "6.0.0.pre.4"
2
+ VERSION = "6.0.0.pre.6"
3
3
  PROTOCOL_VERSION = "6.0"
4
4
  end
data/omf_common.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
 
21
21
  # specify any dependencies here; for example:
22
22
  s.add_development_dependency "minitest", "~> 2.11.3"
23
- s.add_runtime_dependency "blather", "~> 0.7"
23
+ s.add_runtime_dependency "blather", "~> 0.8.0"
24
24
  s.add_runtime_dependency "logging", "~> 1.7.1"
25
25
  s.add_runtime_dependency "hashie", "~> 1.2.0"
26
26
  end
@@ -3,8 +3,8 @@ require 'test_helper'
3
3
  describe OmfCommon::Comm do
4
4
  describe 'when initialised with a pubsub implementation' do
5
5
  it 'must return a instance with all methods defined in corresponding module loaded' do
6
- @comm = OmfCommon::Comm.new(:xmpp_blather)
7
- %w(connect disconnect create_node delete_node subscribe unsubscribe publish).each do |m|
6
+ @comm = OmfCommon::Comm.new(:xmpp)
7
+ %w(connect disconnect create_topic delete_topic subscribe unsubscribe publish affiliations).each do |m|
8
8
  @comm.must_respond_to m
9
9
  end
10
10
 
@@ -2,14 +2,10 @@ require 'test_helper'
2
2
 
3
3
  describe String do
4
4
  describe "when given a string" do
5
- it "must response to to_n, camelcase, constant" do
5
+ it "must response to ducktype" do
6
+ "100".ducktype.must_equal 100
6
7
  "100.0".ducktype.must_equal 100.0
7
8
  "i_am_a_string".ducktype.must_equal "i_am_a_string"
8
- "i_am_a_string".camelcase.must_equal "IAmAString"
9
- module IAmAString; end
10
- "i_am_a_string".camelcase.constant.must_equal IAmAString
11
- module IAmAString::Test; end
12
- "IAmAString::Test".constant.must_equal IAmAString::Test
13
9
  end
14
10
  end
15
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omf_common
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.pre.4
4
+ version: 6.0.0.pre.6
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-04 00:00:00.000000000 Z
12
+ date: 2012-07-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: '0.7'
37
+ version: 0.8.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: '0.7'
45
+ version: 0.8.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: logging
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -89,11 +89,8 @@ files:
89
89
  - lib/omf_common.rb
90
90
  - lib/omf_common/comm.rb
91
91
  - lib/omf_common/command.rb
92
- - lib/omf_common/core_ext/blather/dsl/pubsub.rb
93
- - lib/omf_common/core_ext/blather/stream/features.rb
94
- - lib/omf_common/core_ext/blather/stream/features/register.rb
95
92
  - lib/omf_common/core_ext/string.rb
96
- - lib/omf_common/dsl/xmpp_blather.rb
93
+ - lib/omf_common/dsl/xmpp.rb
97
94
  - lib/omf_common/message.rb
98
95
  - lib/omf_common/protocol.rnc
99
96
  - lib/omf_common/protocol.rng
@@ -124,9 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
121
  version: 1.3.1
125
122
  requirements: []
126
123
  rubyforge_project: omf_common
127
- rubygems_version: 1.8.23
124
+ rubygems_version: 1.8.24
128
125
  signing_key:
129
126
  specification_version: 3
130
127
  summary: Common library of OMF
131
128
  test_files: []
132
- has_rdoc:
@@ -1,11 +0,0 @@
1
- module Blather
2
- module DSL
3
- class PubSub
4
- def create_with_configuration(node, configuration, host = nil)
5
- stanza = Stanza::PubSub::Create.new(:set, send_to(host), node)
6
- stanza.configure_node << configuration
7
- request(stanza) { |n| yield n if block_given? }
8
- end
9
- end
10
- end
11
- end
@@ -1,34 +0,0 @@
1
- module Blather
2
- class Stream
3
- # @private
4
- class Features
5
- def next!
6
- @idx = @idx ? @idx+1 : 0
7
- if stanza = @features.children[@idx]
8
- if stanza.namespaces['xmlns'] && (klass = self.class.from_namespace(stanza.namespaces['xmlns']))
9
- @feature = klass.new(
10
- @stream,
11
- proc {
12
- if (klass == Blather::Stream::Register && @features && !@features.children.find { |v| v.element_name == "mechanisms" }.nil?)
13
- stanza = @features.children.find { |v| v.element_name == "mechanisms" }
14
- @idx = @features.children.index(stanza)
15
- klass = self.class.from_namespace(stanza.namespaces['xmlns'])
16
- @feature = klass.new @stream, proc { next! }, @fail
17
- @feature.receive_data stanza
18
- else
19
- next!
20
- end
21
- },
22
- (klass == Blather::Stream::SASL && @features && !@features.children.find { |v| v.element_name == "register" }.nil?) ? proc { next! } : @fail
23
- )
24
- @feature.receive_data stanza
25
- else
26
- next!
27
- end
28
- else
29
- succeed!
30
- end
31
- end
32
- end
33
- end #Stream
34
- end #Blather
@@ -1,40 +0,0 @@
1
- module Blather
2
- class Stream
3
- class Register < Features
4
- REGISTER_NS = "http://jabber.org/features/iq-register".freeze
5
-
6
- register REGISTER_NS
7
-
8
- def initialize(stream, succeed, fail)
9
- super
10
- @jid = @stream.jid
11
- @pass = @stream.password
12
- end
13
-
14
- def receive_data(stanza)
15
- error_node = stanza.xpath('//error').first
16
-
17
- if error_node
18
- fail!(error_node)
19
- elsif stanza['type'] == 'result' && (stanza.content.empty? || !stanza.children.find { |v| v.element_name == "query" }.nil?)
20
- succeed!
21
- else
22
- @stream.send register_node
23
- end
24
- end
25
-
26
- def register_node
27
- node = Blather::Stanza::Iq::Query.new(:set)
28
- query_node = node.xpath('//query').first
29
- query_node['xmlns'] = 'jabber:iq:register'
30
- username_node = Nokogiri::XML::Node.new('username', node)
31
- username_node.content = @jid.node
32
- password_node = Nokogiri::XML::Node.new('password', node)
33
- password_node.content = @pass
34
- query_node.add_child(username_node)
35
- query_node.add_child(password_node)
36
- node
37
- end
38
- end
39
- end
40
- end